Jos*_*hon 8 testing resources android gradle robolectric
我已经知道之前已经问过这个问题,但我无法解决这个问题.我能够使用jUnit,Robolectric和Gradle编译和应用测试.当我尝试测试活动或获取资源时,会出现问题或错误.每次我遇到同样的问题:
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) );
Run Code Online (Sandbox Code Playgroud)
这是项目的结构:
.
??? 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
Run Code Online (Sandbox Code Playgroud)
这是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')
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙面对这个问题吗?
谢谢
小智 13
使用Robolectric v2.3-SNAPSHOT我也遇到了同样的问题.通过Config注释显式设置测试文件中的清单来解决它
@Config(manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest extends AndroidTestCase {
...
}
Run Code Online (Sandbox Code Playgroud)
最后我设法解决了这个问题,迁移到 Robolectric v2.3-SNAPSHOT。
您可以在这里找到此快照 oss.sonatype.org/index.html#nexus-search;quick~org.robolectric
同样的 Jake Wharton 插件与 Robolectric v2.3-SNAPSHOT 配合得很好。
也许这些信息可能对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
6364 次 |
| 最近记录: |