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 测试成功。