Введение в тестирование на Java
Maria Milusheva
Senior Software Engineer
Два ключевых понятия:
Модуль — наименьшая тестируемая часть приложения, например метод
Модульное тестирование — тест, проверяющий корректность отдельного «модуля» кода в изоляции от остального приложения
Примечания:
Модульное тестирование касается небольших фрагментов логики, а не общей картины
Другие виды тестирования охватывают всё приложение целиком (например, интеграционное)
JUnit получил своё название именно потому, что его основное назначение — модульное тестирование



assertTrue() проверяет, что утверждение истинно:List<String> list = new ArrayList<>();
assertTrue(list.isEmpty()); // No error
assertFalse() проверяет обратное:List<String> list = new ArrayList<>();
list.add("A");
assertFalse(list.isEmpty()); // No error
Переменные со значением null могут вызвать NullPointerException!
Проверка, является ли переменная null или нет, — assertNull() и assertNotNull()
Типичный сценарий: убедиться, что полученное значение не равно null
Map<String, Integer> catalogue = new HashMap<>();
catalogue.put("item1", 10);
// No errors
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Допустим, нужно проверить, что выбрасывается ArrayIndexOutOfBoundsException:
public String getIndex(String[] array, int index) {
return array[index];
}
JUnit предоставляет несколько способов сделать это!
JUnit предоставляет assertThrows(), однако этот метод использует продвинутый синтаксис Java (лямбда-выражения)
Можно воспользоваться assertInstanceOf() следующим образом:
try {
getIndex(new String[]{}, 4);
} catch (Exception e) {
// Pass the expected class of the exception and the exception itself
assertInstanceOf(ArrayIndexOutOfBoundsException.class, e);
}
Типичный проект содержит сотни модульных тестов
Они должны быть лёгкими и простыми для понимания
Их названия должны быть информативными — чтобы с первого взгляда было понятно, что пошло не так при падении теста
Например: methodUnderTest_expectedBehavior_conditions()
Введение в тестирование на Java