我正在使用 Robolectric 进行一些测试,但遇到了一个无法解决的问题。
当我运行测试时,“AndroidManifest”出现以下错误:
警告:在 .\AndroidManifest.xml 中找不到清单文件。
仅回退到 Android 操作系统资源。要删除此警告,请注释
使用 @Config(manifest=Config.NONE) 的测试类。
没有这样的清单文件:.\AndroidManifest.xml
我已经尝试过这些解决方案failed:
@Config (manifest = Config.DEFAULT_MANIFEST_NAME)
@Config(manifest = Config.NONE, constants = BuildConfig.class, sdk = 26)
@Config( constants = BuildConfig.class, manifest="src/main/AndroidManifest.xml", sdk = 26 )
执行过程中的另一个错误是:
android.content.res.Resources$NotFoundException:无法找到
包中的资源 ID #0x7f09001b [android, org.robolectric.default]
...
at
com.example.robertoassad.alltestsmerge.MainActivity.onCreate(MainActivity.java:52)
有错误的这一行是以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
具体来说 in: setContentView(R.layout.activity_main);
对我来说,我没有看到这个问题的意义......
DETAILS:
测试类位于文件夹中:app\src\test\java\com\example\robertoassad
-
测试是:
@RunWith( RobolectricTestRunner.class)
public class Roboletric {
@Test
public void clickingLogin_shouldStartLoginActivity() {
MainActivity activity = Robolectric.setupActivity(MainActivity.class);
activity.findViewById(R.id.button2).performClick();
Intent expectedIntent = new Intent(activity, SecondActivity.class);
Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
assertEquals(expectedIntent.getComponent(), actual.getComponent());
}
}
我遇到了与您面临的问题类似的问题。这乔格里什发表的文章关于此问题的 Robolectric GitHub 问题解决了我的问题。
对我有用的答案的一个方面是添加一个testOptions
阻止我的模块中的build.gradle
file:
testOptions {
unitTests {
includeAndroidResources = true
}
}
添加此块后,我的测试能够运行和访问字符串资源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)