我已经知道这个问题已经被问过,但我无法解决这个问题。 我能够编译并应用jUnit,Robolectric和Gradle进行测试。当我尝试测试活动或获取资源时,就会出现问题或错误。每当我有同样的问题:Gradle Robolectric资源NotFoundException中的测试
android.content.res.Resources $ NotFoundException:未知的资源
资源$ NotFoundException:没有这样的主题
PageActivity startPageActivity = Robolectric.buildActivity(PageActivity.class).create().get();
Context context = Robolectric.getShadowApplication().getApplicationContext();
ShadowContext shadowContext = shadowOf(context);
assertNotNull(" No App name String " ,shadowContext.getString(R.string.app_name));
这是该项目的结构:
.
├── build.gradle
├── settings.gradle
└── mainproject
├── build
│ ├── classes
│ │ └── debug
├── build.gradle
└── src
└── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com...
│ └── resources
└── envDev
│ └── java
│ └── com...
│ └── resources
└── envQa
│ └── java
│ └── com...
│ └── resources
└── envLive
│ └── java
│ └── com...
│ └── resources
└── test
│ └── src
│ └── java
│ └── com...
│ └── rescources
└── testEnvDev
│ └── src
│ └── java
│ └── com...
│ └── rescources
└── testEnvQa
│ └── src
│ └── java
│ └── com...
│ └── rescources
└── testEnvLive
└── src
└── java
└── com...
└── rescources
这是源码集de在gradle罚款:
sourceSets {
main {
java.srcDir file('src/main/java')
manifest.srcFile file('src/main/AndroidManifest.xml')
res.srcDir file('src/main/resources')
}
envDev {
java.srcDir file('src/envDev/java')
manifest.srcFile 'src/envDev/AndroidManifest.xml'
res.srcDir file('src/envDev/resources')
}
envQa {
java.srcDir file('src/envQa/java')
manifest.srcFile 'src/envQa/AndroidManifest.xml'
res.srcDir file('src/envQa/resources')
}
envLive {
java.srcDir file('src/envLive/java')
manifest.srcFile 'src/envLive/AndroidManifest.xml'
res.srcDir file('src/envLive/resources')
}
instrumentTest {
java.srcDir file('src/test/java')
res.srcDir file('src/test/resources')
}
instrumentTestEnvDev {
java.srcDir file('src/testEnvDev/java')
res.srcDir file('src/testEnvDev/resources')
}
instrumentTestEnvQa {
java.srcDir file('src/testEnvQa/java')
res.srcDir file('src/testEnvQa/resources')
}
instrumentTestEnvLive {
java.srcDir file('src/testEnvLive/java')
res.srcDir file('src/testEnvLive/resources')
}
}
有人可以举手解决这个问题吗?
感谢
您是否使用了一些gradle插件来运行robolectric测试?你使用的是什么版本的robolectric?没有必要指定所有的源集 - 重命名资源文件夹的水库,只是使用产品口味 –
是的,我使用Gradle Android测试插件0.9.1和Robolectric 2.1。我将再次申请“res”作为资源名称。我已经做过,但没有奏效。谢谢。 –
你在使用android gradle插件吗? –