【问题标题】:How to share JSON files between Android Test and Unit Tests in Android如何在 Android 中的 Android 测试和单元测试之间共享 JSON 文件
【发布时间】:2016-06-15 18:53:23
【问题描述】:

我尝试了这个博客上的 cmets 中给出的建议 - 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));
  }}

项目结构:

任何指针?

【问题讨论】:

    标签: android unit-testing android-gradle-plugin android-espresso


    【解决方案1】:

    对于仪器测试,您应该使用 Android API 从资产文件夹中读取文件。

    如果您要读取的文件位于您的测试应用程序的assets 文件夹中(在您的示例中就是这种情况),您必须使用测试应用程序的Context。测试应用上下文可以通过InstrumentationRegistry.getContext()解析:

    // Opens an InputStream for the file src/sharedTestHelpers/assets/test.json InstrumentationRegistry.getContext().getAssets().open("test.json");

    如果文件在应用的 assets 文件夹中,你需要使用InstrumentationRegistry.getTargetContext()

    // Opens an InputStream for the file src/main/assets/app.json InstrumentationRegistry.getTargetContext().getAssets().open("app.json");

    【讨论】:

    【解决方案2】:

    经过更多深入研究我的观察

    单元测试可以访问它,因为它不在 android 中运行。

    对于 Android 测试,这是有问题的,因为

    1. AVD/设备中的 Android 测试
    2. 如果您查看您的 apk(通过制作为 testApk.zip 并将其解压缩),则没有像 /sharedTestHelpers/assets/ 这样的文件夹,只有 资产文件夹
    3. 因此,要访问资产文件夹,您需要 "Context" 来访问测试中的上下文,您可以使用

      InstrumentationRegistry.getContext()

    【讨论】:

    • 谢谢。你说的对。因此,我确实按照上面链接中所述的解决方案进行了操作,并且效果很好。
    猜你喜欢
    • 2023-03-09
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2020-03-03
    • 2017-10-15
    • 1970-01-01
    相关资源
    最近更新 更多