В чем цель аннотаций @SmallTest, @MediumTest и @LargeTest в Android?

Я новичок в Android, и я видел пример кода, используя эти аннотации. Например:

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

Что делает эта аннотация?

Ответ 1

Это сообщение в блоге объясняет это лучше всего. В основном, это следующее:

таблица тестирования

  • Маленький: этот тест не взаимодействует с какой-либо файловой системой или сетью.
  • Medium: доступ к файловым системам в поле, в котором выполняются тесты.
  • Large: доступ к внешним файловым системам, сетям и т.д.

В блог разработчиков Android, небольшой тест должен взять < 100 мс, средний тест < 2s, и большой тест < 120s.

Смотрите эту страницу (найдите "@SmallTest" ) о том, как указать, какие тесты запускаются.

Ответ 2

В качестве дополнения к Davidann answer и главным образом вопрос OP в комментарии:

В контексте вышеприведенного кода действительно ли это DO, кроме как оставить заметку для других разработчиков? Обеспечивает ли это что-либо? Существуют ли какие-либо инструменты, которые используют эту аннотацию? Что это за цель в разработке Android?

Вы можете запустить группу тестов, аннотированных определенной аннотацией.

От Документация AndroidJUnitRunner:

Запуск определенного размера теста, то есть аннотирование с помощью SmallTest или Среднего теста или LargeTest:

adb shell am instrument -w -e размер [small | medium | large] com.android.foo/android.support.test.runner.AndroidJUnitRunner

Вы также можете настроить эти параметры с помощью gradle:


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

Подробнее см. этот пост в блоге.