Android Studio 3.0 Beta2
classpath 'com.android.tools.build:gradle:3.0.0-beta3'
testCompile 'org.robolectric:robolectric:3.4.2'无法运行的测试类:
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricTestRunner.class)
public class RecipeAdapterTest {
private MainActivity activity;
@Before
public void setup() {
activity = Robolectric.setupActivity(MainActivity.class);
/* Also tried this same Error
activity = Robolectric.buildActivity(MainActivity)
.create()
.resume()
.get();
*/
}
@Test
public void testActivityShouldNotBeNull() {
assertThat(activity, is(notNullValue()));
}
}这是错误的堆栈跟踪:
android.content.res.Resources$NotFoundException: String resource ID #0x7f0c0020
at android.content.res.Resources.getText(Resources.java:274)
at android.content.res.Resources.getString(Resources.java:360)
at android.content.Context.getString(Context.java:376)
at org.robolectric.shadows.ShadowActivity.getActivityTitle(ShadowActivity.java:100)
at org.robolectric.shadows.ShadowActivity.callAttach(ShadowActivity.java:110)
at org.robolectric.android.controller.ActivityController.attach(ActivityController.java:56)
at org.robolectric.android.controller.ActivityController.of(ActivityController.java:25)
at org.robolectric.Robolectric.buildActivity(Robolectric.java:98)
at org.robolectric.Robolectric.buildActivity(Robolectric.java:94)
at org.robolectric.Robolectric.setupActivity(Robolectric.java:102)
at me.androidbox.busbybaking.adapters.RecipeAdapterTest.setup(RecipeAdapterTest.java:63)在Edit Configurations中,我将Working Directory设置为$MODULE_DIR$
非常感谢你的建议。
发布于 2017-08-30 16:47:42
如前所述由谷歌团队的一名工程师(最有可能是泽维尔·杜克罗)负责,Robolectric与AAPT2有问题:
Robolectric与aapt2不兼容。
有两种选择。
第一种选择-遵循Robolectric Android 3.0+指南
在build.gradle中添加以下内容:
android {
testOptions {
unitTests {
includeAndroidResources = true
}
}
}用Robolec计量测试运行程序注释您的测试:
@RunWith(RobolectricTestRunner.class)
public class SandwichTest {
}第二个选项:禁用AAPT2,将以下行添加到gradle.properties文件中:
android.enableAapt2=false发布于 2017-12-14 12:21:43
罗波尔文献声明在AndroidStudio3.x中应该使用以下配置:
android {
testOptions {
unitTests.includeAndroidResources true
}
}发布于 2019-03-13 09:43:42
(对于任何正在寻找类似问题的解决方案的人来说)
一定要使用
RuntimeEnvironment.application和而不是
RuntimeEnvironment.systemContext当您试图“手动”解析资源时。
在这种情况下,Resources$NotFoundException可能会与Robolectric一起出现。
https://stackoverflow.com/questions/45922916
复制相似问题