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


99

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

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

该注释完成了什么工作?

Answers:


9

在评论中,除了Davidann的回答(主要是OP的问题)之外

在上面的代码的情况下,它实际上DO任何东西,除了休假其他开发人员的说明?它有强制执行吗?是否有任何利用此注释的工具?Android开发的目的是什么?

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

AndroidJUnitRunner文档中

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

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

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


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

通过gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

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


好的,所以总之我只能使用adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; 运行@SmallTest测试套件。谢谢
kosiara-Bartosz Kosarzycki

我们如何在gradle命令中指定注释?例如,例如:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE

@ Mr-IDE,您得到答案了吗?
约翰

138

这篇博客文章对此做了最好解释。基本上,它是以下内容:

测试图

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

根据Android Developers博客,小型测试的时间应少于100ms,中等测试的时间应少于2s,大型测试的时间应少于120s。

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


13
我看到了(记得上个月读过该文章)。但是在以上代码的上下文中,除了给其他开发人员留下注释外,它实际上是否有任何作用?它有强制执行吗?是否有任何利用此注释的工具?Android开发的目的是什么?
Eric Palakovich Carr 2011年

3
@Eric Android TestRunner允许您指定要运行的测试大小。
谢丽尔·西蒙

7
Google对此发布了新的博客:plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29 2014年

1
@SmallTest已经过时
霓虹灯Warge

1
@NeonWarge使用import android.support.test.filters。[Small]测试;
亚历山大·西迪科夫·菲佛

1

您还可以通过定义自己的类别,用@Category(MediumTest.class)@Category(LargeTest.class)等等对POJO单元测试进行注释- 有关示例,请参见test-categories回购

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.