Dan*_*n J 15 android gradle robolectric build.gradle
我一直在关注这个教程上设置Robolectric来测试我的Android摇篮工程.
我一直在遇到这个错误:
android.content.res.Resources$NotFoundException: no such label com.mypackage.dev:string/app_name
Run Code Online (Sandbox Code Playgroud)
通过从教程中下载示例项目,我已经确定问题是我的productFlavors
(dev,staging,production).向工作示例项目添加flavor会导致同样的问题.你可以在这个答案中看到我的build.gradle的大纲.
我已经看到了各种答案(例如这里),这表明我需要sourceSets
为每种味道指定.我已经尝试了很多组合,但不能完全正确.有人可以帮忙吗?
令我困惑的另一件事是我见过的所有Robolectric样本似乎都在为"instrumentTest"指定sourceSets和依赖项,即使Robolectric测试总是只在"test"文件夹中.在我的情况下,我已经在instrumentTest文件夹中进行了Robotium测试,我不明白为什么我需要为Robotium代码添加Robolectric依赖项.
我偶然发现了同样的问题(未找到资源)并在 robolectric 源上找到了解决方案。有一个 PackageName 的设置器,因此在我的自定义测试运行程序中,我在返回清单之前设置了包名称。就像是:
@Override protected AndroidManifest getAppManifest(Config config) {
String manifestProperty = System.getProperty("android.manifest");
if (config.manifest().equals(Config.DEFAULT) && manifestProperty != null) {
String resProperty = System.getProperty("android.resources");
String assetsProperty = System.getProperty("android.assets");
AndroidManifest manifest = new AndroidManifest(Fs.fileFromPath(manifestProperty), Fs.fileFromPath(resProperty),
Fs.fileFromPath(assetsProperty));
manifest.setPackageName("com.mypackagename");
return manifest;
}
return super.getAppManifest(config);
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。
归档时间: |
|
查看次数: |
2262 次 |
最近记录: |