unc*_*tex 7 android robolectric android-studio robolectric-gradle-plugin
我刚刚用一个新应用程序设置了Roboelectric 3.2.2,我已经编写了我的第一个简单测试:
@RunWith(RobolectricTestRunner.class)
@Config(manifest="src/main/AndroidManifest.xml",
packageName="my.pacakge.name.debug")
public class MainActivityTest {
@Test
public void clickButton() {
MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);
String text = ((TextView)mainActivity.findViewById(R.id.text_main)).getText().toString();
assertEquals("Should equal Hello World!", "Hello World!", text);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经照着所有的设置和说明这里和这里,但我仍然得到这个错误每次我尝试运行测试时间:
android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0 in packages [android, my.package.name.debug]
Run Code Online (Sandbox Code Playgroud)
此异常发生在我正在调用的测试的第一行setupActivity()
.
小智 0
当使用自定义 RobolectricTestRunner 并提供缺少的系统属性时,该插件适用于我。
public class CustomRobolectricTestRunner extends RobolectricTestRunner {
public CustomRobolectricTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
String buildVariant = BuildConfig.BUILD_TYPE + (BuildConfig.FLAVOR.isEmpty()? "" : "/" + BuildConfig.FLAVOR);
System.setProperty("android.package", BuildConfig.APPLICATION_ID);
System.setProperty("android.manifest", "build/intermediates/manifests/full/" + buildVariant + "/AndroidManifest.xml");
System.setProperty("android.resources", "build/intermediates/res/" + buildVariant);
System.setProperty("android.assets", "build/intermediates/assets/" + buildVariant);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:您还必须在单元测试运行配置中使用不同的工作目录。最好是更改默认配置并使用 $MODULE_DIR$ https://code.google.com/p/android/issues/detail?id=158015#c5
归档时间: |
|
查看次数: |
1863 次 |
最近记录: |