如何在android中的单元测试和仪器测试之间共享资源?

neb*_*ros 10 tdd junit android unit-testing

我正在关注这篇文章http://blog.danlew.net/2015/11/02/sharing-code-between-unit-tests-and-instrumentation-tests-on-android/,以分享代码,但是如何分享一个资产?,像一个夹具文件?,我想模拟一个api响应,所以我有一个JSON文件来做,但我试试这个:https://gist.github.com/nebiros/91a68aaf6995fa635507

在单元测试中,这适用于:

ClassLoader.getSystemResourceAsStream("some_response.json");
Run Code Online (Sandbox Code Playgroud)

但是在Android Intrumentation Tests中,它没有,我在哪里可以放置那些夹具文件?

neb*_*ros 10

我发现这种方式,共享夹具文件testandroidTest:

  • 将您的灯具文件添加到您的文件resources夹中test,在这里:src/test/resources.
  • 添加test资源文件夹androidTest,resources.srcDirs += ['src/test/resources']这里是一个例子:

    android {
        sourceSets {
            String sharedTestJavaDir = 'src/sharedTest/java'
    
            test {
                java.srcDirs += [sharedTestJavaDir]
            }
    
            androidTest {
                java.srcDirs += [sharedTestJavaDir]
                resources.srcDirs += ['src/test/resources']
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • androidTest这种方式访问env中的fixture文件:this.getClass().getClassLoader().getResourceAsStream(filename);