107

我是 Android 新手,我已经看到使用这些注释的示例代码。例如:

@SmallTest
public void testStuff() {
    TouchUtils.tapView(this, anEditTextView);
    sendKeys("H E L P SPACE M E PERIOD");
    assertEquals("help me.", anEditTextView.getText().toString());
}

该注释完成了什么?

4

3 回答 3

148

这篇博文解释得最好。基本上,它是以下内容:

测试图

  1. 小:此测试不与任何文件系统或网络交互。
  2. 中:访问正在运行测试的盒子上的文件系统。
  3. 大:访问外部文件系统、网络等。

根据Android 开发者博客,小型测试应该 < 100 毫秒,中型测试 < 2 秒,大型测试应该 < 120 秒。

有关如何指定运行哪些测试的信息,请参阅此页面(搜索“@SmallTest”)。

于 2011-01-12T17:39:32.577 回答
14

作为对Davidann 的回答以及评论中主要是OP 的问题的补充:

在上述代码的上下文中,除了给其他开发人员留下注释之外,它实际上是否做任何事情?它执行什么吗?有没有利用这个注释的工具?它在 Android 开发中的目的是什么?

您可以运行一组带有特定注释的测试。

来自AndroidJUnitRunner 文档

运行特定的测试大小,即使用SmallTestMediumTestLargeTest注释:

adb shell am instrument -w -e size [small|medium|large] com.android.foo/android.support.test.runner.AndroidJUnitRunner

您还可以通过 gradle 设置这些参数:


    android {
        ...
        defaultConfig {
            ...
            testInstrumentationRunnerArgument 'size', 'Large'
        }
    }

通过梯度:

-Pandroid.testInstrumentationRunnerArguments.size=small

有关更多详细信息,请参阅Doug Stevenson 博客文章以及此博客文章

于 2017-08-11T14:02:14.110 回答
2

您还可以通过定义自己的类别@Category(MediumTest.class)来使用or等​​注释 POJO 单元测试- 请参阅test-categories存储库以获取示例@Category(LargeTest.class)

于 2018-02-28T11:53:05.363 回答