gpt4 book ai didi

android - 测试中的 Gradle Robolectric 资源 NotFoundException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:59:54 24 4
gpt4 key购买 nike

我已经知道以前有人问过这个问题,但我无法解决这个问题。我能够使用 jUnit、Robolectric 和 Gradle 编译和应用测试。当我尝试测试 Activity 或获取资源时出现问题或错误。每次我遇到同样的问题时:

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,我也遇到了同样的问题。通过 Config 注释在测试文件中显式设置 list 来解决它,例如

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

关于android - 测试中的 Gradle Robolectric 资源 NotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21186622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com