Krz*_*mic 23 android unit-testing gradle android-studio
对于我的Android应用程序,我正在编写需要读取一些文件的单元测试.由于这些是仅测试文件,我不希望它们出现在我的res文件夹中,因为我不希望它们最终出现在我的最终.apk文件中.
我想做一些类似于这个问题但使用新添加的(在Gradle 1.1中)单元测试支持(而不是仪器测试).
我的项目结构如下:
/app
/src
/main
/java/my.module/myClass.java
/res/production_resources_go_here
/test
/java/my.module/myClassTest.java
/resources/testFile.txt
Run Code Online (Sandbox Code Playgroud)
我的myClassTest测试应该是什么样才能成功阅读testFile.txt?
Mar*_*ski 43
在提出这个问题的时候,这根本就没有用.幸运的是,这已经解决了.
您必须将文本文件放在app/src/test/resourcesOP尝试执行的文件夹下.此外,它必须与您的测试类位于同一个包中.因此,如果您在文件夹ReadFileTest.java中包,那么您的测试文件应该在.com.example.testapp/src/test/javaapp/src/test/resources/com/example/test
然后你可以像这样找到你的文本文件:
getClass().getResourceAsStream("testFile.txt")
Run Code Online (Sandbox Code Playgroud)
这将打开InputStream文本文件.如果您不确定如何使用它,可以使用以下几种方法:将InputStream读取/转换为String
You*_*jae 11
其次@ Deepansu的回答,我统一化的测试数据都Test和AndroidTest在{project root}/sampledata其中是Android Studio中的默认位置目录New > Sample Data Directory命令。
1.在您的项目中,右键单击并单击New > Sample Data Directory。这将在 中创建sampledata目录app,该目录与build.gradle文件src和build目录具有相同的层次结构。
2.在 中build.gradle,添加如下脚本;
android {
sourceSets {
test {
resources.srcDirs += ['sampledata']
}
androidTest {
resources.srcDirs += ['sampledata']
}
}
}
Run Code Online (Sandbox Code Playgroud)
3. Sync在gradle中。
现在,我们可以将测试资源文件放在一个目录中,并在两个测试环境中使用它们。
您可以阅读文件如下;
// use somewhere at test logic. Note that slash symbol is required (or not).
jsonObject = new JSONObject(readFromFile("/testFile.json"));
// a method to read text file.
public String readFromFile(String filename) throws IOException {
InputStream is = getClass().getResourceAsStream(filename);
StringBuilder stringBuilder = new StringBuilder();
int i;
byte[] b = new byte[4096];
while ((i = is.read(b)) != -1) {
stringBuilder.append(new String(b, 0, i));
}
return stringBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)
将其添加到build.gradle:
android {
sourceSets {
test {
resources.srcDirs += ['src/test/resources']
}
androidTest {
resources.srcDirs += ['src/androidTest/resources']
}
}
}
Run Code Online (Sandbox Code Playgroud)
要获得单元测试可访问的资源,请将文件添加到: src/test/resources.对于仪器测试,请将您的文件添加到:src/androidTest/resources.
| 归档时间: |
|
| 查看次数: |
11995 次 |
| 最近记录: |