1. Real life unit testsReal life unit tests
,Эмуляция БД,Эмуляция БД SOASOA .и т д.и т д..
Andrei SolntsevAndrei Solntsev
2. -Как показывают юнит-Как показывают юнит
тестытесты
Очки в боулингОчки в боулинг
КалькуляторКалькулятор
ТреугольникТреугольник
assertEquals(5,
Triangle.hypotenuse(3, 4));
3. В реальной жизниВ реальной жизни
Я не программирую боулингЯ не программирую боулинг!!
Моё ПОМоё ПО другоедругое
-Юнит тесты-Юнит тесты не подходятне подходят для моих проектовдля моих проектов
4. ?В чём проблема?В чём проблема
Базы данныхБазы данных
-Веб сервисы-Веб сервисы
EJBEJB
……
Внешние
зависимости
7. • Собрать и запустить ВЕСЬ самолёт
Тестируемый объект
Эмулятор ветра
(mocked wind)
• Протестировать крыло отдельно
• Дорого
• Долго
• Трудно найти причину проблемы
• Не всегда возможно!
ЭмуляторыЭмуляторы
8. Эмуляторы в кодеЭмуляторы в коде
Class Wing {
WindService wind = new WindServiceImpl();
public void run() {
…
wind.blow();
…
}
}
Wing wing = new Wing();
wing.wind = mock(WindService.class);
when(wind.getSpeed()).thenReturn(100);
wing.run();
assertThat(wing.getLift(), equalTo(150));
Код системы:
Юнит-тест:
10. НаблюдашкиНаблюдашки
• Не всегда тесты впереди кода
• В юнит-тестах НЕЛЬЗЯ использовать БД, SOA и т.д.
• Чтобы потестировать, иногда надо порефакторить
• Недостаточно одного вида тестирования