Android Gradle机器人分子资源在测试中未发现异常

Android Gradle机器人分子资源在测试中未发现异常,android,testing,resources,gradle,robolectric,Android,Testing,Resources,Gradle,Robolectric,我已经知道以前有人问过这个问题,但我无法解决这个问题。 我能够使用jUnit、Robolectric和Gradle编译和应用测试。当我尝试测试活动或获取资源时,问题或错误就会出现。每次我遇到同样的问题: android.content.res.Resources$NotFoundException:未知资源 Resources$NotFoundException:没有这样的主题 PageActivity startPageActivity = Robolectric.buildActi

我已经知道以前有人问过这个问题,但我无法解决这个问题。 我能够使用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')
        }

    }
有人能帮忙解决这个问题吗


谢谢

最后我设法解决了这个问题,转到了Robolectric v2.3-SNAPSHOT

您可以在此处找到此快照

同一个Jake Wharton插件可以很好地与这个Robolectric v2.3-SNAPSHOT配合使用


也许这些信息可以帮助其他人。

即使使用Robolectric v2.3-SNAPSHOT,我也会遇到同样的问题。通过在测试文件中通过配置注释显式设置清单解决了这个问题,如

@Config(manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest extends AndroidTestCase {
...
}

你是否在使用gradle插件来运行机器人分子测试?您使用的是什么版本的robolectric?无需指定所有源代码集-将资源文件夹重命名为res,只需使用product Flavorsys,我使用的是Gradle Android测试插件0.9.1和Robolectric 2.1。我将再次应用“res”作为资源名称。我以前已经做过了,但是没有用。谢谢。你正在使用android gradle插件吗?是的,我正在使用Jake Wharton one:@eugenmrtynov你如何将快照版本添加到你的
gradle.build
?我的好像找不到