Какова цель аннотаций @SmallTest, @MediumTest и @LargeTest в Android?

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());
}

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

Эрик Палакович Карр
источник

Ответы:

9

В дополнение к ответу Дэвиданна и, в основном , вопросу OP в комментарии:

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

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

Из документации AndroidJUnitRunner :

Выполнение определенного размера тест т.е. аннотированный с SmallTest или MediumTest или LargeTest :

adb shell am instrument -w -e size [маленький | средний | большой] com.android.foo/android.support.test.runner.AndroidJUnitRunner

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


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

Через gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

См. Сообщение в блоге Дуга Стивенсона, а также этот пост для получения более подробной информации.

азизбекский
источник
Итак, короче говоря, я могу запустить только набор тестов @SmallTest с adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; спасибо
kosiara - Bartosz Kosarzycki
Как указать аннотацию в команде Gradle? Например, что-то вроде:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE
@ Mr-IDE, вы получили ответ?
Иоанн
138

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

таблица испытаний

  1. Маленький: этот тест не взаимодействует ни с какой файловой системой или сетью.
  2. Средний: доступ к файловым системам на компьютере, на котором выполняются тесты.
  3. Большой: доступ к внешним файловым системам, сетям и т. Д.

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

См. Эту страницу (выполните поиск по запросу «@SmallTest») о том, как указать, какие тесты запускать.

Дэвид Вайзер
источник
13
Я вижу (и помню, как читал ту статью в прошлом месяце). Но в контексте приведенного выше кода, действительно ли он делает что-нибудь, кроме как оставить записку для других разработчиков? Он к чему-то принужден? Есть ли какие-нибудь инструменты, использующие эту аннотацию? Какова цель разработки под Android?
Эрик Палакович Карр
3
@Eric Android TestRunner позволяет указать, какой размер тестов запускать.
Шерил Саймон
7
По этому поводу есть новый блог от Google: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29,
1
@SmallTest устарел
Neon Warge
1
@NeonWarge использует import android.support.test.filters. [Small] Test;
Александр Сидиков Pfeif