【发布时间】:2015-09-03 23:36:10
【问题描述】:
在尝试让 Robolectric RC3 在 Android Studio 中工作时,我得到了
Caused by: java.lang.RuntimeException: build/intermediates/bundles/debug/AndroidManifest.xml not found or not a file; it should point to your project's AndroidManifest.xml
at org.robolectric.manifest.AndroidManifest.validate(AndroidManifest.java:120)
at org.robolectric.manifest.AndroidManifest.getResourcePath(AndroidManifest.java:469)
at org.robolectric.manifest.AndroidManifest.getIncludedResourcePaths(AndroidManifest.java:475)
at org.robolectric.RobolectricTestRunner.createAppResourceLoader(RobolectricTestRunner.java:479)
at org.robolectric.RobolectricTestRunner.getAppResourceLoader(RobolectricTestRunner.java:471)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:73)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:421)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:234)
我试过了
@Config(manifest = "app/src/main/AndroidManifest.xml", constants = BuildConfig.class, sdk=21)
我尝试在我的 TestRunner 中设置清单位置,但没有任何效果。在文件系统中,我看到清单位于
./app/build/intermediates/manifests/full/debug/AndroidManifest.xml
不在 Robolectric 正在寻找的位置。 有一次,清单被忽略了,然后资源发生了类似的问题,应用程序或 Robolectric 找不到我的应用程序使用的原始资源。 这是在我的构建文件中:
sourceSets {
main {
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/res']
}
test {
java.srcDirs = ['src/test/java', 'src/main/java']
resources.srcDirs = ['src/test/res', 'src/main/res']
}
}
我如何告诉 Robolectric 在哪里寻找清单,更重要的是,在哪里寻找资源?
编辑: 我已经从 github 签出了 Robolectric,我已经构建了它,将它安装在我的本地 .m2 存储库中,gradle 文件现在引用本地 SNAPSHOT 构建,并且我确保 Gradle 不会从远程存储库获取新版本.然后我将 RobolectricGradleTestRunner 复制到我的项目中,我更改了定义文件位置的行:它不包含模块名称。现在它起作用了。
【问题讨论】:
标签: android android-studio android-gradle-plugin robolectric