Robolectric在运行测试时无法找到资源ID

时间:2017-12-03 21:30:24

标签: java android android-studio robolectric

我是Android Studio中Robolectric测试的新手,当我尝试运行测试时,会出现同样的错误,指出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());
    }
}

请帮忙!非常感谢!

2 个答案:

答案 0 :(得分:0)

如果您使用的是Android Gradle Plugin 3.0或更高版本,则需要使用build.gradle的android块添加以下代码段

InputRecord

或在单元测试中找不到Android资源。

答案 1 :(得分:0)

我在build.gradle文件中将SDK更改为27,并且Robolectric测试成功。