з
адачи
В этой главе вы узнаете:
1) как писать и запускать модульные тесты;
2) как писать и запускать интеграционные тесты.
A
ndroid
AOSP определяет и различает несколько типов тестов:
Модульные тесты
Это узкоспециализированные тесты, проверяющие работу какого-то одно
-
го класса. Обычно один тест проверяет единственный метод в этом классе.
Если модульный тест потерпел неудачу, вы должны точно знать, где в ва
-
шем коде находится проблема. Они охватывают очень узкую область кода,
потому что в реальном мире приложение включает в себя гораздо больше,
чем простой вызов одного метода. Они должны быть достаточно быстрыми,
чтобы их можно было выполнять после каждого изменения кода.
214
Тестирование
Интеграционные тесты
Эти тесты проверяют взаимодействие нескольких классов, чтобы убедиться,
что они работают должным образом при совместном использовании. Часто
интеграционные тесты структурируются так, чтобы каждый проверял одну
функцию, например возможность сохранить задачу. Они тестируют боль
-
ший объем кода, чем модульные тесты, но точно так же должны быть быст-
рыми и максимально точными.
Сквозные тесты
Тестируют комбинации функций, составляющих целые процессы. Они дей
-
ствуют медленно, потому что тестируют значительные части приложения
и тщательно имитируют реальное использование. Они имеют самый широ
-
кий охват кода и способны подтвердить, что ваше приложение действитель
-
но работает, как требуется.
Приемы тестирования в Android, возможно, немного отличаются от приемов
тестирования, с которыми вы сталкивались раньше. Классификация тестов
и их семантика могут не совпадать с теми, что описываются в других руковод
-
ствах по программированию.
Начнем с модульного тестирования. Модульное тестирование в Android
очень похоже на модульное тестирование в любых других системах или язы
-
ках. Обычно для создания тестов мы используем фреймворк JUnit, но, вообще
говоря, это не является обязательным условием. Модульный тест должен быть
узкоспециализированным и точно определять конкретную точку в коде, по
-
этому ошибки, выявленные модульными тестами, исправляются относительно
просто. Например, если у вас есть метод, умножающий два числа и возвраща
-
ющий результат, модульный тест может вызвать этот метод с некоторыми за
-
ранее определенными числами, чтобы убедиться, что результат соответствует
ожидаемому. Допустим, ваш класс выглядит так:
Java
public class Maths {
public static int multiply(int a, int b) {
return a * b;
}
}
Kotlin
fun multiply(a:Int, b:Int):Int {
return a * b
}
Вы можете начать с очень простого теста:
Java
public class MathsTests {
@Test
public void testMultiplication() {
int a = 2;
Android
215
int b = 3;
int expected = 6;
int actual = Maths.multiply(a, b);
assertEquals(expected, actual);
}
}
Kotlin
fun testMultiplication() {
val a = 2
val b = 3
val expected = 6
val actual = Maths.multiply(a, b)
assertEquals(expected, actual)
}
Имейте в виду, что подобные локальные тесты находятся в папке
test
, сге
-
нерированной средой разработки, в родительском каталоге
src
. Инструменти
-
рованные тесты, которые выполняются на реальном устройстве или в эмуля
-
торе, находятся в подпапке
Do'stlaringiz bilan baham: |