【发布时间】:2014-01-17 12:58:15
【问题描述】:
我已经知道之前有人问过这个问题,但我无法解决这个问题。 我能够使用 jUnit、Robolectric 和 Gradle 编译和应用测试。当我尝试测试活动或获取资源时出现问题或错误。每次我遇到同样的问题时:
android.content.res.Resources$NotFoundException:未知资源
Resources$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
这是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 测试?你用的是什么版本的机器人?无需指定所有源集 - 将资源文件夹重命名为 res 并使用产品风味
-
是的,我正在使用 Gradle Android 测试插件 0.9.1 和 Robolectric 2.1。我将再次申请“res”作为资源名称。我之前已经做过,但是没有用。谢谢。
-
你在使用android gradle插件吗?
-
是的,我正在使用 Jake Wharton 之一:link@EugenMrtynov
标签: android testing resources gradle robolectric