9

我正在开发一个 android 应用程序,并且我为单元测试创​​建了一个新的测试项目。建议在哪里存储测试装置(如 xml 文件等)以及访问它的正确方法是什么?

4

3 回答 3

2

这取决于您是否真的是指单元测试仪器测试(例如使用浓缩咖啡和其他东西)......

单元测试:

  1. 将您的固定装置放入src/test/resources(例如src/test/resources/fixture.json
  2. 从您的测试类访问它们,例如使用:

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("fixture.json")

仪器化测试:

  1. 将您的固定装置放入src/androidTest/assets/(例如src/androidTest/assets/fixture.json
  2. 从您的测试类访问它们,例如使用:

InputStream is = InstrumentationRegistry.getContext().getResources().getAssets().open("fixture.json")

以下是一些如何转换InputStreamString.

这是一篇很好的文章,描述了不同的案例。


PS我知道这个问题已经有6年以上的历史了......回答任何未来的搜索。

于 2018-09-05T19:39:29.793 回答
1

经过一番搜索,我发现没有一种正确的方法可以在 Android 中存储装置(在 java 中也没有那么多)。

Fixtures 是一种提供简单且一致的数据以传递到测试用例的方法。使用返回对象的静态方法创建.java类是一种方法。

例子:

public class Pojos {

    public static List<TaskListItem> taskListItems() {
        return Arrays.asList(
                new TaskListItem("one"),
                new TaskListItem("two"),
                new TaskListItem("three")
        );
    }
}
于 2017-11-21T08:17:05.860 回答
0

您可以将 Gradle 配置为从共享文件夹读取资源,您将能够通过执行以下操作在单元测试或检测测试中共享代码和资源。

android {
    // ...
    sourceSets {

        final String sharedJavaDir = 'src/sharedTest/java'
        final String sharedResourcesDir = 'src/sharedTest/resources'

        test.java.srcDirs += sharedJavaDir
        test.resources.srcDirs += [sharedResourcesDir]

        androidTest.java.srcDirs += sharedJavaDir
        androidTest.resources.srcDirs += [sharedResourcesDir]

        // ....
    }
    // ...
}

假设我在

/app/src/sharedTest/resources/test_fixture_file.txt

科特林代码

您可以在 UnitTest 或 Instrumented 测试中使用。

val resource: InputStream? = this.javaClass.getResourceAsStream("/test_fixture_file.txt")
于 2021-11-08T02:09:11.897 回答