我尝试了此博客评论中提供的建议 - http://blog.danlew.net/2015/11/02/sharing-code-between-unit-tests-and-instrumentation-tests-on-android/
但Android测试无法读取该文件;单元测试工作完全正常。
的build.gradle:
sourceSets {
String sharedTestDir = 'src/sharedTestHelpers/java'
String sharedTestAssetDir = 'src/sharedTestHelpers/assets'
test {
java.srcDir sharedTestDir
assets.srcDir sharedTestAssetDir
}
androidTest {
java.srcDir sharedTestDir
assets.srcDir sharedTestAssetDir
}
}
TestCreator类:
public class TestDataCreator {
public static String readFromFile(String fileName) throws IOException
{
return FileUtils.readFileToString(new
File("src/sharedTestHelpers/assets/" + fileName));
}}
项目结构:
任何指针?
答案 0 :(得分:2)
对于检测测试,您应该使用Android API从资源文件夹中读取文件。
如果要读取的文件位于测试应用程序的assets
文件夹中(在您的示例中就是这种情况),则必须使用测试应用程序的Context
。可以通过InstrumentationRegistry.getContext()
:
// Opens an InputStream for the file src/sharedTestHelpers/assets/test.json
InstrumentationRegistry.getContext().getAssets().open("test.json");
如果文件位于应用的资源文件夹中,则需要使用InstrumentationRegistry.getTargetContext()
:
// Opens an InputStream for the file src/main/assets/app.json
InstrumentationRegistry.getTargetContext().getAssets().open("app.json");
答案 1 :(得分:0)
经过多次深入研究我的观察
单元测试可以访问它,因为它不能在android中运行。
因为Android测试有问题,因为
因此,要访问资产文件夹,您需要"上下文" 来访问测试中的上下文,您可以使用
InstrumentationRegistry.getContext()