4. Курс по Java, 2016
Юнит-тестирование
Постоянно и непрерывно
Легко проверить всё повторно
Пишем конкретные тесты
Тесты запускают настоящий код
Тестируем каждый кусочек по-отдельности
Тестируем при каждом изменении кода
Проверяем, как оно функционирует
Автоматически
5. Курс по Java, 2016
Юнит-тесты — хорошо
Уверенность в коде, можно рефакторить
Тест — хорошая документация
Меньше отладки,
более продуктивная разработка
Получаются более независимые модули
Получаются правильные абстракции,
появляется тестовая реализация
6. Курс по Java, 2016
Юнит-тесты — сложно
Тесты нужно писать, трудно привыкнуть
Для каждой версии кода нужно отслеживать результаты тестов
Невозможно протестировать всё:
безопасность, функционал, UI плохо поддаются автоматическому
тестированию
7. Курс по Java, 2016
Юнит-тесты — опасно
Тесты могут быть ошибочными,
правильность модулей не означает правильность системы в целом,
заглушки — не настоящие
Создают ложное ощущение надежности
Есть соблазн отключения нерабочих тестов
8. Курс по Java, 2016
JUnit
<dependencies>
<dependency>
<scope>test</scope>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
Maven scopes:
● compile
● provided
● runtime
● test
9. Курс по Java, 2016
Тест
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
public class ArrayReverserTest {
private ArrayReverser reverser;
@Before
public void setUp() {
this.reverser = new ArrayReverser();
}
@Test
public void testReverse() {
int[] original = {1, 2, 3};
int[] reversed = this.reverser.reverse(original);
assertArrayEquals("wrong reverse", new int[] {3, 2, 1}, reversed);
}
}
25. Курс по Java, 2016
Agile Manifesto
Личности и их взаимодействия важнее,
чем процессы и инструменты;
Работающее программное обеспечение важнее,
чем полная документация;
Сотрудничество с заказчиком важнее,
чем контрактные обязательства;
Реакция на изменения важнее,
чем следование плану.