Robolectric 运行 测试时无法找到资源 ID
Robolectric unable to find resource ID when running test
我是 Robolectric 在 Android Studio 中进行测试的新手,当我尝试 运行 测试时,出现了同样的错误,指出 android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0 in packages
。我确保 JUnit 工作目录是 $MODULE_DIR$,但它仍然不起作用。将 testOptions.unitTests.includeAndroidResources
添加到我的 build.gradle 文件也没有任何作用。这是测试文件的样子:
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
public class StartActivityTests {
StartActivity activity;
@Before
public void setUp() throws Exception {
activity = Robolectric.buildActivity(StartActivity.class)
.create()
.resume()
.get();
}
@Test
public void shouldNotBeNull() throws Exception
{
assertNotNull(activity);
}
@Test
public void clickingNewGame_shouldStartAvatarRoomActivity() {
StartActivity activity = Robolectric.setupActivity(StartActivity.class);
activity.findViewById(R.id.newUserButtonFirstPage).performClick();
Intent expectedIntent = new Intent(activity, AvatarRoomActivity.class);
Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
assertEquals(expectedIntent.getComponent(), actual.getComponent());
}
}
请帮忙!将不胜感激!
如果您使用的是 Android Gradle 插件 3.0 或更高版本,您需要在 build.gradle
的 android 块中添加以下代码段
testOptions {
unitTests {
includeAndroidResources = true
}
}
或在单元测试中找不到 Android 资源。
我在 build.gradle 文件中将 SDK 更改为 27,Robolectric 测试成功。
我是 Robolectric 在 Android Studio 中进行测试的新手,当我尝试 运行 测试时,出现了同样的错误,指出 android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0 in packages
。我确保 JUnit 工作目录是 $MODULE_DIR$,但它仍然不起作用。将 testOptions.unitTests.includeAndroidResources
添加到我的 build.gradle 文件也没有任何作用。这是测试文件的样子:
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
public class StartActivityTests {
StartActivity activity;
@Before
public void setUp() throws Exception {
activity = Robolectric.buildActivity(StartActivity.class)
.create()
.resume()
.get();
}
@Test
public void shouldNotBeNull() throws Exception
{
assertNotNull(activity);
}
@Test
public void clickingNewGame_shouldStartAvatarRoomActivity() {
StartActivity activity = Robolectric.setupActivity(StartActivity.class);
activity.findViewById(R.id.newUserButtonFirstPage).performClick();
Intent expectedIntent = new Intent(activity, AvatarRoomActivity.class);
Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
assertEquals(expectedIntent.getComponent(), actual.getComponent());
}
}
请帮忙!将不胜感激!
如果您使用的是 Android Gradle 插件 3.0 或更高版本,您需要在 build.gradle
的 android 块中添加以下代码段testOptions {
unitTests {
includeAndroidResources = true
}
}
或在单元测试中找不到 Android 资源。
我在 build.gradle 文件中将 SDK 更改为 27,Robolectric 测试成功。