Как я могу создавать тесты в Android Studio?

Просто скачал Android Studio, основанный на идее Intellij Idea.

Как создать тесты?

Я замечаю, что есть возможность создать тестовый модуль, но это ничего не делает, только создайте новый проект с помощью src

Я также попытался нажать горячую клавишу CTRL + AlT + T, которая позволяет создавать модульные тесты для существующего classа, но, похоже, хочет разместить его в текущем проекте. Конечно, это не помогает с TDD

У кого-нибудь есть опыт здесь?

Изменить: с 0.1.8 это теперь поддерживается в среде IDE . Пожалуйста, следуйте инструкциям, а не следуя инструкциям ниже.

Следуя Руководству пользователя плагинов Android Gradle, я смог получить тесты, работающие в командной строке, выполнив следующие шаги для вновь созданного проекта (я использовал пакет по умолчанию «com.example.myapplication»):

  1. Добавьте каталог src / instrumentTest / java для тестов
  2. Добавьте тестовый class (расширяющий ActivityTestCase) в пакет com.example.myapplication.test
  3. Запуск виртуального устройства
  4. В командной строке (в каталоге MyApplicationProject / MyApplication) используйте команду «../gradlew connectedInstrumentTest»,

Это провело мои тесты и поместило результаты теста в MyApplicationProject / MyApplication / build / reports / instrumentTests / connected. Я новичок в тестировании приложений для Android, но, похоже, он работает нормально.

Внутри IDE можно попробовать запустить тот же class тестов. Вам нужно будет

  1. Обновить build.gradle, чтобы перечислить Maven Central как репо
  2. Обновите build.gradle, добавьте JUnit 3.8 в качестве инструмента. Зависимость инструментального набора, например, instrumentTestCompile ‘junit: junit: 3.8’
  3. В «Структура проекта» вручную переместите JUnit первым в порядке зависимости

Однако это терпит неудачу (в classеpath, используемом при запуске тестов, отсутствует тестовый выходной каталог). Тем не менее, я не уверен, что это будет работать независимо от того, насколько я понимаю, что требуется специальный тестовый бегун для Android.

Этот ответ предназначен для людей, которые только начинают работать с тестированием Android. Я приведу два простых примера, которые помогут вам понять, как работает тестирование. Если вы последуете в течение следующих 10 минут, вы все настроите, чтобы начать добавлять свои тесты в свое приложение. Я думаю, вы будете удивлены, насколько это просто. Я определенно был.

Введение в Android-тестирование

Есть два разных типа тестов, которые вы будете делать.

  • Локальные тесты. Они запускаются локально на JVM (виртуальная машина Java). Поскольку они локальные, они быстры. Вы можете использовать их для проверки частей своего кода, которым требуется Java, а не API Android. (Иногда вы можете сделать фальшивый объект API для локального тестирования других вещей. Это называется насмешкой . Например, макет Context .)
  • Приборные испытания. Эти тесты выполняются на реальном устройстве или в эмуляторе. Это делает их медленнее, чем местные тесты. Однако они более гибкие, потому что у вас есть полный Android API, ansible для вас.

Создайте новый проект, и вы увидите следующие папки по умолчанию.

введите описание изображения здесь

Все уже существует и ждет, когда вы создадите свои тесты. Все уже настроено!

Как создать локальные тесты

Откройте файл ExampleUnitTest показанный на изображении выше. он должен выглядеть примерно так:

 public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); } } 

Нажмите двойную зеленую стрелку, чтобы запустить все тесты или одну зеленую стрелку, чтобы запустить только одну. (В этом случае есть только один тест, поэтому оба делают то же самое.)

введите описание изображения здесь

Он должен пройти (пока 2 + 2 все равно 4 когда вы читаете этот ответ). Поздравляем, вы только что проверили свой первый тест!

Создание собственного теста

Давайте напишем собственный тест. Сначала добавьте этот class в свой основной проект приложения, чтобы у нас было что-то испытать:

 public class MyClass { public int add(int a, int b) { return a + b; } } 

Теперь измените метод addition_isCorrect() в тестовом classе как похожий на следующий код (или просто добавьте другой метод с другим именем):

 public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { MyClass myClass = new MyClass(); int result = myClass.add(2, 2); int expected = 4; assertEquals(expected, result); } } 

Запустите его снова, и вы увидите, как он пройдет. Поздравляем, вы только что создали свой собственный первый тест! (Ну, я думаю, технически это было мое, но, эй, достаточно близко. Какая у тебя твоя.)

Как создать инструментальные тесты

Откройте файл ExampleInstrumentedTest . он должен выглядеть примерно так:

 @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); assertEquals("com.example.myapp", appContext.getPackageName()); } } 

Снова нажмите одну из этих зеленых кнопок.

введите описание изображения здесь

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

Создание собственного теста

Приборные тесты используют Espresso для проведения тестов. Это похоже на вашего собственного маленького пользователя-робота, с которым вы можете протестировать свое приложение. Вы можете сказать, что он сделал что-то вроде нажатия кнопки или чтения свойств TextView.

Вы можете написать инструкции о том, как выполнить тест вручную, но поскольку мы только начинаем, давайте использовать функцию автоматической записи . Это супер просто.

Сначала добавьте кнопку в свой интерфейс, чтобы у нас было с чем работать. Я сделал это:

     

Затем нажмите « Выполнить»> «Записать эспрессо-тест» в меню.

введите описание изображения здесь

После запуска нажмите кнопку в эмуляторе, а затем, чтобы закончить, выберите OK в диалоговом окне «Запись». Он должен автоматически генерировать следующий тестовый код.

 @LargeTest @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityTestRule mActivityTestRule = new ActivityTestRule<>(MainActivity.class); @Test public void mainActivityTest() { ViewInteraction appCompatButton = onView( allOf(withId(R.id.myButton), withText("Click me"), isDisplayed())); appCompatButton.perform(click()); } } 

Большой! Вы только что создали свой первый инструментальный тест! Это было очень легко. Вероятно, вы должны добавить утверждение, чтобы сделать его настоящим испытанием, но это довольно легко сделать с рекордером. Посмотрите это видео, чтобы пройти немного глубже.

Дальнейшее изучение

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

  • Шаблоны тестирования Android (короткие видеоролики от разработчиков Android)
  • Начало работы с тестированием (Android-документы)
  • Три шага к качеству кода через TDD

Я бы предложил использовать файл gradle.build .

  1. Добавьте каталог src / androidTest / java для тестов (как Крис начинает объяснять)

  2. Откройте файл gradle.build и укажите там:

     android { compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion sourceSets { androidTest { java.srcDirs = ['androidTest/java'] } } } 
  3. Нажмите «Sync Project with Gradle file» (на верхней панели). Теперь вы должны увидеть папку «java» (внутри «androidTest») – это зеленый цвет.

  4. Теперь вы можете создать там тестовые файлы и выполнить их.

Я думаю, что это сообщение от Rex St John очень полезно для модульного тестирования с помощью студии android.

http://rexstjohn.com/wp-content/uploads/2014/01/Screen-Shot-2014-01-24-at-6.26.20-PM-300×137.png

На данный момент (студия 0.61) достаточно поддерживать надлежащую структуру проекта. Нет необходимости создавать отдельный тестовый проект, как в eclipse (см. Ниже).

Структура тестов

Android Studio v.2.3.3

Выделите контекст кода, который вы хотите протестировать, и используйте горячую клавишу: CTRL + SHIFT + T

Используйте диалоговый интерфейс, чтобы завершить настройку.

Структура тестирования должна отражать макет вашего пакета проектов для достижения наилучших результатов, но вы можете вручную создавать собственные тесты, если у вас есть правильные настройки каталога и сборки.

Android Studio продолжает развиваться, поэтому вышеприведенные ответы в конечном итоге не будут применяться. Для текущей версии Android Studio 1.2.1.1 есть хороший учебник по тестированию на:

http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/

Одним из основных изменений, по-видимому, является то, что в Android Studio тестовое приложение интегрировано в проект приложения.

Я не уверен, что это помогает вашей конкретной проблеме, но я нашел руководство по проведению тестов с проектом Gradle. Руководство пользователя Android Gradle

Самый простой способ, который я нашел, – упорядочить в моем следующем сообщении в блоге :

  1. Создайте папку, в которой вы будете писать все свои модульные тесты (желательно com.example.app.tests)
  2. Создайте новый тестовый class (желательно NameOfClassTestedTests, то есть BankAccountLoginActivityTests)
  3. Расширить инструмент InstrumentationTestCase
  4. Напишите тест на отказ, чтобы убедиться, что нам удалось настроить модульные тесты
  5. Обратите внимание, что имя метода единичного теста должно начинаться со слова «тест» (желательно testTestedMethodNameExpectedResult (), т.е. testBankAccountValidationFailedShouldLogout ())
  6. Настройте свой проект для модульных тестов:
  7. Откройте меню «Выполнить …» и нажмите «Редактировать конфигурации»,
  8. Нажмите кнопку +
  9. Выберите шаблон Android Tests
  10. Введите имя для вашей конфигурации запуска (желательно «тесты AppName»)
  11. Выберите свое приложение в модуле combobox
  12. Выберите переключатель «Все в пакете» (обычно вы должны выбрать этот вариант, потому что он выполняет все модульные тесты во всех ваших тестовых classах)
  13. Заполните имя тестового пакета с шага 1 (например, com.example.app.tests)
  14. Выберите устройство, которое вы хотите запустить
  15. Применить и сохранить конфигурацию
  16. Выполнить единичные тесты (и ожидать отказа):
  17. Выберите новую созданную конфигурацию тестов в меню «Выполнить»
  18. Нажмите «Выполнить» и прочитайте результаты в выходной консоли

Удачи, делая ваш код более читабельным, удобным и проверенным!

Android Studio была своего рода движущей целью, сначала являющейся предварительным просмотром разработчика и теперь находящимся в бета-версии. Путь для classов Test в проекте изменился во времени, но независимо от того, какую версию AS вы используете, путь объявляется в вашем .iml-файле. В настоящее время с версией 0.8.3 вы найдете следующее внутри внутреннего iml-файла:

          

Файл .iml сообщает вам, где разместить тестовые classы.

Начиная с Android Studio 1.1, у нас есть официальная (экспериментальная) поддержка для написания Unit Tests (Roboelectric работает также).

Источник: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support

Добавьте ниже lib внутри файла gradleиента

  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) 

Создайте class HomeActivityTest внутри каталога androidTest и перед запуском теста добавьте строку flurry_api_key и sender_id в файл строковых ресурсов и измените значение для случая сбоя и успеха.

 @RunWith(AndroidJUnit4.class) public class HomeActivityTest { private static final String SENDER_ID = "abc"; private static final String RELEASE_FLURRY_API_KEY = "xyz"; @Test public void gcmRegistrationId_isCorrect() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); Assert.assertEquals(SENDER_ID, appContext.getString(R.string.sender_id)); } @Test public void flurryApiKey_isCorrect() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); Assert.assertEquals(RELEASE_FLURRY_API_KEY, appContext.getString(R.string.flurry_api_key)); } } 
  • Как решить ошибку LNK2019: нерешенный внешний символ - функция?
  • Вызов обратных вызовов с помощью Mockito
  • Я хочу запустить файл сценария Selenium из командной строки
  • Как настроить модульное тестирование для Visual Studio C ++
  • Как объяснить сортировку (численное, лексикографическое и сопоставление) с примерами для нетехнических тестеров?
  • Переопределить Java System.currentTimeMillis для проверки кода с временным кодом
  • Можно ли запустить несколько версий Google Chrome на одном компьютере? (Mac или Windows)
  • Как проверить кнопку «Мне нравится» на локальном хосте?
  • Как протестировать mocking источник данных JNDI с помощью Spring?
  • Автоматизированное тестирование веб-интерфейса
  • Как разработать и протестировать приложение, отправляющее электронные письма (без заполнения чей-то почтового ящика с тестовыми данными)?
  • Давайте будем гением компьютера.