Подтвердить что ты не робот

Почему JUnit 4 на Android не работает?

поскольку в документации Android говорится: "Обратите внимание, что API тестирования Android поддерживает стиль кода JUnit 3, но не JUnit 4." (Основы тестирования). Должно быть ясно, что JUnit 4 нельзя использовать из коробки с Android.

Но почему это так? Это потому, что тесты выполняются в DVM (в том, что для Android Runtime поддерживается только JUnit 3)? На JVM один сам по себе может выбрать среду выполнения JUnit, которая должна использоваться. Разве это невозможно в DVM?

4b9b3361

Ответ 1

Обновление 2015/10

Теперь это возможно через AndroidJUnitRunner, который является частью Android Supporting Library. Короче говоря, вам нужно сделать следующее в проекте Gradle:

  • Добавьте зависимости:

    dependencies {
        compile 'com.android.support:support-annotations:22.2.0'
        androidTestCompile 'com.android.support.test:runner:0.4.1'
    }
    
  • Укажите testInstrumentationRunner:

    android {
        defaultConfig {
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
    }
    
  • Аннотировать свой тестовый класс @RunWith(AndroidJUnit4.class).

  • Напишите свои тесты в обычном стиле JUnit4.

Также см. Инструкции по настройке эспрессо. Обратите внимание, что вам не нужен сам Espresso для простых тестов JUnit4.

Зачем это нужно

В Интернете есть очень мало информации, которую я могу найти в Интернете. Лучшее, что я нашел, это информация о InstrumentationTestRunner.

Нет никаких препятствий для запуска тестов JUnit4 на устройстве Android, как и любой другой Java-код. Тем не менее, платформа тестирования Android выполняет некоторую дополнительную работу:

  • Он отправляет результаты теста обратно на вашу машину разработки через ADB.
  • Это инструмент (я не уверен, что именно это подразумевает).

Вышеупомянутые действия выполняются некоторыми расширениями специально для JUnit3.

Этот код, специфичный для JUnit3, кажется, является частью InstrumentationTestRunner, который является частью основной системы Android. Однако, как видно из AndroidJUnitRunner, можно использовать собственный тестовый бегун, поддерживающий JUnit4 или другие фреймворки.