Android中@SmallTest,@ MediumTest和@LargeTest注释的目的是什么?

时间:2011-01-12 17:33:07

标签: java android unit-testing tdd android-espresso

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

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

该注释完成了什么?

3 个答案:

答案 0 :(得分:124)

This blog post解释得最好。基本上,它是以下:

testing chart

  1. 小:此测试不与任何文件系统或网络交互。
  2. 中:访问正在运行测试的框上的文件系统。
  3. 大:访问外部文件系统,网络等
  4. 根据Android Developers blog,小测试应该采用< 100毫秒,中等测试< 2s,大型测试< 120秒。

    请参阅this page(搜索“@SmallTest”),了解如何指定运行哪些测试。

答案 1 :(得分:7)

在评论中添加Davidann's answer,主要是OP's question

  

在上面代码的上下文中,除了为其他开发者留言之外,它实际上是 DO 吗?它执行什么吗?有没有使用此注释的工具? Android开发的目的是什么?

您可以运行一组使用特定注释注释的测试。

来自AndroidJUnitRunner documentation

  

运行特定的测试尺寸,即使用 SmallTest MediumTest LargeTest 进行注释:

     

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

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


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

有关详细信息,请参阅this blog post

答案 2 :(得分:1)

您还可以使用@Category(MediumTest.class)@Category(LargeTest.class)等注释POJO单元测试,方法是定义自己的Categories - 请参阅test-categories repo中的示例