我尝试了此博客评论中给出的建议 - 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
}
}
测试创建类:
public class TestDataCreator {
public static String readFromFile(String fileName) throws IOException
{
return FileUtils.readFileToString(new
File("src/sharedTestHelpers/assets/" + fileName));
}}
项目结构:
有什么建议吗?
最佳答案
对于仪器测试,您应该使用 Android API 从 Assets 文件夹中读取文件。
如果您要读取的文件位于测试应用程序的 assets
文件夹中(在您的示例中就是这种情况),您必须使用 Context
测试应用程序。可以通过 InstrumentationRegistry.getContext()
解析测试应用程序上下文:
//为文件 src/sharedTestHelpers/assets/test.json 打开一个 InputStream
InstrumentationRegistry.getContext().getAssets().open("test.json");
如果文件位于应用程序的 Assets 文件夹中,则需要使用 InstrumentationRegistry.getTargetContext()
:
//为文件 src/main/assets/app.json 打开一个 InputStream
InstrumentationRegistry.getTargetContext().getAssets().open("app.json");
关于android - 如何在 Android 中的 Android 测试和单元测试之间共享 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843591/