Ця відповідь призначена для людей, які тільки починають тестувати Android. Я надам два простих приклади, які допоможуть вам побачити, як працює тестування. Якщо ви дотримуєтесь наступних 10 хвилин, ви будете готові почати додавати тести до власного додатку. Я думаю, ти здивуєшся, як це легко. Я, звичайно, був.
Вступ до тестування Android
Ви будете робити два різні типи тестів.
- Випробування на локальній одиниці. Вони запускаються локально на JVM (Java Virtual Machine). Оскільки вони місцеві, вони швидкі. Ви можете використовувати їх для тестування частин вашого коду, які просто потрібні Java, а не API для Android. (Іноді ви можете зробити підроблений об’єкт API, щоб перевірити більше речей локально. Це називається глузуванням . Приклад - макет
Context
.)
- Інструментальні випробування. Ці тести виконуються на реальному пристрої або в емуляторі. Це робить їх повільніше, ніж місцеві тести. Однак вони більш гнучкі, оскільки у вас є повний доступний API для Android.
Створіть новий проект, і ви побачите наступні папки за замовчуванням.
Все вже є і чекаю, коли ви створите свої тести. Це все налаштовано вже!
Як створити тести локальної одиниці
Відкрийте 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());
}
}
Чудово! Ви тільки що створили свій перший інструментальний тест! Це було дуже просто. Вам, мабуть, слід додати твердження, щоб зробити його справжнім тестом, але це дуже легко зробити і з диктофоном. Перегляньте це відео, щоб пройти трохи глибше.
Подальше навчання
Спочатку я переглянув відео, а потім прочитав документацію. Це все дуже корисно. Останнє посилання - це низка статей, які висвітлюють деякі важливі речі, над якими варто задуматися, обираючи тест.