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

Вопрос:Просто скачан Android Studio, основанный на идее Intellij Idea. Как создать тесты? Я замечаю, что есть возможность создать тестовый модуль, но это ничего не делает, только создайте новый проект с помощью src Я также попытался нажать горячую клавишу CTRL + AlT + T, которая позволяет создавать модульные тесты для существующего класса, но, похоже, хочет разместить

Вопрос:

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

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

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

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

Есть ли у кого-нибудь опыт?

Ответ №1

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

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

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

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

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

  • Обновить build.gradle для отображения Maven Central как репо
  • Обновление build.gradle добавляет JUnit 3.8 в качестве зависимости инструмента TESTCompile, например. instrumentTestCompile ‘junit: junit: 3.8’
  • В “Структура проекта” вручную переместите JUnit первым в порядке зависимости

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

Ответ №2

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

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

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

    android { compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion sourceSets { androidTest { java.srcDirs = [‘androidTest/java’] } } }

  • Нажмите “Синхронизировать проект с Gradle файлом” (на верхней панели). Теперь вы должны увидеть папку “java” (внутри “androidTest” ) – это зеленый цвет.

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

Ответ №3

Я думаю, этот пост от 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

Ответ №4

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

Содержание

  1. Введение в Android-тестирование
  2. Как создать локальные модульные тесты
  3. Как создать инструментальные тесты
  4. Дальнейшее исследование

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

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

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

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

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

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

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

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

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

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

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

Позвольте написать собственный тест. Сначала добавьте этот класс в свой основной проект приложения, чтобы у нас есть что испытать:

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

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

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.

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

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

<?xml version=»1.0″ encoding=»utf-8″?> <android.support.constraint.ConstraintLayout xmlns:android=»http://schemas.android.com/apk/res/android» xmlns:tools=»http://schemas.android.com/tools» android:layout_width=»match_parent» android:layout_height=»match_parent» tools:context=»com.example.myapp.MainActivity»> <Button android:id=»@+id/myButton» android:text=»Click me» android:layout_width=»wrap_content» android:layout_height=»wrap_content»/> </android.support.constraint.ConstraintLayout>

Затем нажмите Запустить > Записать эспрессо-тест в меню.

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

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

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

Дальнейшее исследование

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

Ответ №5

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

Ответ №6

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

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

Ответ №7

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

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

Ответ №8

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

  • Создайте папку, в которой вы будете писать все ваши модульные тесты (желательно com.example.app.tests)
  • Создайте новый тестовый класс (желательно NameOfClassTestedTests, например, BankAccountLoginActivityTests)
  • Расширить InstrumentationTestCase
  • Запишите неудачный unit test, чтобы убедиться, что нам удалось настроить модульные тесты
  • Обратите внимание, что имя метода unit test должно начинаться со слова “test” (предпочтительно testTestedMethodNameExpectedResult() i.e testBankAccountValidationFailedShouldLogout())
  • Настройте проект для модульных тестов:
  • Откройте меню “Выполнить…” и нажмите “Редактировать конфигурации”
  • Нажмите кнопку +
  • Выберите шаблон Android Tests
  • Введите имя для вашей конфигурации запуска (желательно “тесты AppName” )
  • Выберите свое приложение в модуле combobox
  • Выберите переключатель “Все в пакете” (обычно вы должны выбрать этот вариант, потому что он выполняет все модульные тесты во всех ваших тестовых классах)
  • Заполните имя тестового пакета с шага 1 (например, com.example.app.tests)
  • Выберите устройство, для которого вы хотите запустить тесты.
  • Применить и сохранить конфигурацию
  • Выполнить тесты модулей (и ожидать сбой):
  • Выберите новую созданную конфигурацию тестов в меню “Выполнить”
  • Нажмите “Выполнить” и прочитайте результаты в выходной консоли.

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

Ответ №9

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

<sourceFolder url=»file://$MODULE_DIR$/src/androidTest/res» type=»java-test-resource» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/resources» type=»java-test-resource» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/assets» type=»java-test-resource» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/aidl» isTestSource=»true» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/java» isTestSource=»true» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/groovy» isTestSource=»true» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/jni» isTestSource=»true» /> <sourceFolder url=»file://$MODULE_DIR$/src/androidTest/rs» isTestSource=»true» />

В файле .iml указывается, где разместить тестовые классы.

Ответ №10

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

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

Ответ №11

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

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

Создайте класс 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)); } } Ответ №12

Android Studio v.2.3.3

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

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

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

Оцените статью
Добавить комментарий