package com.airportapp.test.Models; import androID.app.Activity; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import org.robolectric.Robolectric; import com.airportapp.test.MyRobolectricTestRunner; import com.airportapp.LoginActivity; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @RunWith(MyRobolectricTestRunner.class) public class LoginActivityTest { @Before public voID setup() { //do whatever is necessary before every test } @Test public voID testActivityFound() { Activity activity = Robolectric.buildActivity(LoginActivity.class).create().get(); Assert.assertNotNull(activity); } }
错误是AndroID Studio在运行测试时找不到androID.support文件.你可以在这里看到错误:
显示的另一个错误是:
androID.vIEw.InflateException:XML文件app / src / main / res / layout / activity_login.xml第#行(对不起,尚未实现):错误输出类com.facebook.Widget.Loginbutton
所以AndroID Studio也不满意facebook登录按钮:(但它有效…我们认为我们需要导入一些东西,但我们不知道在哪里放置它.
解决方法 InflateException是因为Robolectric无法从Facebook SDK中找到资源.要解决此问题,必须更新project.propertIEs文件以指向Facebook SDK项目.通过添加以下行来执行此 *** 作:androID.library.reference.1={Path}
{Path}应该是一个相对路径,从project.propertIEs文件到包含Facebook SDK项目的AndroIDManifest.xml的文件夹.在我的情况下是../../build/intermediates/exploded-aar/com.facebook.androID/facebook/3.21.0.
请注意,这适用于所有包含Robolectric无法找到的资源的AndroID库项目.进一步阅读:here和here.此外,有关project.propertIEs的更多文档可以在here找到.请注意,在我的项目中,Robolectric测试位于AndroID应用程序项目本身.因此,您还可以尝试将project.propertIEs文件放在与用于测试的AndroIDManifest.xml相同的目录中.
至于你的第一个问题;我没有个人经验.但似乎是因为Gradle在编译单元测试时找不到支持库.从this问题的答案应该解决它.
总结以上是内存溢出为你收集整理的使用Robolectric进行Android测试:无法识别Facebook SDK全部内容,希望文章能够帮你解决使用Robolectric进行Android测试:无法识别Facebook SDK所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)