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

Как запустить простой тест JUnit4 в Android Studio 1.1?

У меня есть проект Android, который показывает "Hello World". Он был создан из шаблона "Blank Activity" из Android Studio.

Затем я добавляю/создаю новый класс java в своем пакете приложений (тот же пакет, который имеет мою активность). Я называю это Shape и добавляю простой конструктор

public class Shape {
    public Shape(int i){
        if (i==0){
            throw new IllegalArgumentException("Cant have 0");
        }
    }
}

Великий. Теперь у меня есть класс, который вообще не касается Android, и я хочу unit test его. Что мне делать дальше?

Здесь останавливается мой вопрос. Ниже я рассмотрю, что я пробовал.

Обратите внимание, что я действительно никогда не тестировал его раньше на Android или Java. Извините меня за ошибки "новобранец".

  • Пока в Shape.java я перехожу к "Навигация" > "Тест"
  • Нажмите Enter, чтобы выбрать "Создать новый тест"
  • Получите это всплывающее окно и выберите JUNIT4.

enter image description here

  1. Затем я ударил кнопку fix, чтобы исправить найденную библиотеку
  2. Я получаю это всплывающее окно

enter image description here

  1. Я не уверен, что выбрать, поэтому я выбираю по умолчанию/выделен.
  2. Я пишу свой тест

    package com.eghdk.getjunit4towork;
    
    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    public class ShapeTest {
        @Test(expected = IllegalArgumentException.class)
        public void testShapeWithInvalidArg() {
            new Shape(0);
        }
    }
    
  3. На данный момент я не совсем уверен, как выполнять мои тесты, но постарайтесь сделать это: enter image description here

  4. Я получаю эти ошибки при запуске

    Ошибка: (3, 17) Gradle: ошибка: пакет org.junit не существует
    Ошибка: (5, 24) Gradle: ошибка: пакет org.junit не существует
    Ошибка: (8, 6) Gradle: ошибка: не удается найти тест класса Test

4b9b3361

Ответ 1

Начиная с Android Studio 1.1 существует (экспериментальная) unit test поддержка. Несколько цитат из этой страницы:

Вам нужно будет указать ваши зависимости тестирования в файле build.gradle файл вашего андроидного модуля. Например:

dependencies {
  testCompile 'junit:junit:4.12'
  testCompile "org.mockito:mockito-core:1.9.5"
}

Чтобы использовать поддержку тестирования модулей в AS, вам необходимо выполнить следующие шаги:

  • Обновите build.gradle, чтобы использовать плагин версии android gradle версии 1.1.0-rc1 или более поздней версии (либо вручную в файле build.gradle, либо в интерфейсе пользователя в файле > Структура проекта)

  • Добавьте необходимые зависимости тестирования к app/build.gradle(см. выше).

  • Включите функцию тестирования устройства в настройках > gradle > Экспериментальный.

  • Синхронизировать проект.

  • Откройте окно инструмента "Варианты исполнения" (слева) и измените тестовый артефакт на "Единичные тесты".

  • Создайте каталог для вашего исходного кода тестирования, то есть src/test/java. Вы можете сделать это из командной строки или используя Вид проекта в окне инструмента проекта. Новый каталог должен быть выделены зеленым цветом в этот момент. Примечание: имена источника теста каталоги определяются плагином gradle на основе соглашения.

  • Создайте свой тест. Вы можете сделать это, открыв класс, щелкнув его имя правой кнопкой мыши и выбрав "Перейти к > Тест". Добавить тест случаев.
  • Щелкните правой кнопкой мыши новый класс или метод тестирования и выберите "Выполнить...".
  • (Необязательно) Вы можете уменьшить время компиляции, используя gradle напрямую. Для этого перейдите в меню "Выполнить" и выберите "Изменить конфигурации". Там найдите шаблон JUnit по умолчанию, удалите Шаг "Сделать" перед запуском и добавьте шаг "Gradle know make" (оставьте имя задачи пустым).

Важно знать, что существует два типа тестов: androidTest и plain test.

  • androidTest - это, прежде всего, тесты, которые вы запускаете на эмуляторе или устройстве, например, контрольно-измерительные тесты. Из командной строки вы используете ./gradlew connectedCheck для их запуска.
  • test предназначен для тестов, которые вы не хотите запускать на устройстве, таких как unit test, которые вы написали. Вы запускаете ./gradlew test для запуска этих тестов.

Как указано в цитате, вы переключаетесь между androidTest и test в Android Studio, изменяя тестовый артефакт.

Естественно, что не рекомендуется запускать тесты на устройстве или эмуляторе, так как это ускоряет процесс тестирования. Благодаря новой экспериментальной поддержке unit test вы получаете доступ к обрезаемому API Android без использования устройства. Это позволяет вам перемещать больше тестов с androidTest на test.

Ответ 2

Для android studio 1.2 или выше я включаю этот ответ, так как это один из первых ранжиров в google, и это отличный вариант, и ОЧЕНЬ легко следовать учебному пособию о том, как устанавливать модульные тесты в Android Studio, это ссылка: https://io2015codelabs.appspot.com/codelabs/android-studio-testing#1

Потеряв 2 часа, пытаясь запустить тест, я, наконец, сделал это с помощью вышеуказанной ссылки, надеюсь, что это будет так же полезно для вас, как и для меня.

Ответ 3

В настоящее время Android Studio (текущая версия 1.4) имеет полную поддержку Unit test без каких-либо обходных решений. Так же, как предложено в автоматически созданном примере ExampleUnitTest:

To work on unit tests, switch the Test Artifact in the Build Variants view.

screen shot

Ответ 4

Перейдите к настройкам, затем создайте инструменты, затем gradle, а затем экспериментальные. В экспериментах снимите флажок, чтобы разрешить все тестовые артефакты. Thats it game over