Real life unit testsReal life unit tests
,Эмуляция БД,Эмуляция БД SOASOA .и т д.и т д..
Andrei SolntsevAndrei Solntsev
-Как показывают юнит-Как показывают юнит
тестытесты
 Очки в боулингОчки в боулинг
 КалькуляторКалькулятор
 ТреугольникТ...
В реальной жизниВ реальной жизни
Я не программирую боулингЯ не программирую боулинг!!
Моё ПОМоё ПО другоедругое
 -Юнит ...
?В чём проблема?В чём проблема
 Базы данныхБазы данных
 -Веб сервисы-Веб сервисы
 EJBEJB
 ……
Внешние
зависимости
?Какое решение?Какое решение
int: 3, 4
int: 5
Client
code
code
db
jdbc
Юнит-тест
тестирует
только это А это надо
эмулирова...
ЭмуляторыЭмуляторы
Требования:
• При скорости ветра 100 км/ч
• Подъёмная сила крыла должна быть 150 кН
Как бы вы стали это...
• Собрать и запустить ВЕСЬ самолёт
Тестируемый объект
Эмулятор ветра
(mocked wind)
• Протестировать крыло отдельно
• Дорог...
Эмуляторы в кодеЭмуляторы в коде
Class Wing {
WindService wind = new WindServiceImpl();
public void run() {
…
wind.blow();...
В КОД !!!!!
НаблюдашкиНаблюдашки
• Не всегда тесты впереди кода
• В юнит-тестах НЕЛЬЗЯ использовать БД, SOA и т.д.
• Чтобы потестирова...
http://mockito.org
http://www.acgavin.com/hamcrest-and-junit4-4
Real-life unit tests
Upcoming SlideShare
Loading in …5
×

Real-life unit tests

12,430 views

Published on

Presentation "Real-life unit tests" shown in May 2011 in DevClub, Tallinn.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
12,430
On SlideShare
0
From Embeds
0
Number of Embeds
8,978
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Real-life unit tests

  1. 1. Real life unit testsReal life unit tests ,Эмуляция БД,Эмуляция БД SOASOA .и т д.и т д.. Andrei SolntsevAndrei Solntsev
  2. 2. -Как показывают юнит-Как показывают юнит тестытесты  Очки в боулингОчки в боулинг  КалькуляторКалькулятор  ТреугольникТреугольник assertEquals(5, Triangle.hypotenuse(3, 4));
  3. 3. В реальной жизниВ реальной жизни Я не программирую боулингЯ не программирую боулинг!! Моё ПОМоё ПО другоедругое  -Юнит тесты-Юнит тесты не подходятне подходят для моих проектовдля моих проектов
  4. 4. ?В чём проблема?В чём проблема  Базы данныхБазы данных  -Веб сервисы-Веб сервисы  EJBEJB  …… Внешние зависимости
  5. 5. ?Какое решение?Какое решение int: 3, 4 int: 5 Client code code db jdbc Юнит-тест тестирует только это А это надо эмулировать
  6. 6. ЭмуляторыЭмуляторы Требования: • При скорости ветра 100 км/ч • Подъёмная сила крыла должна быть 150 кН Как бы вы стали это тестировать?
  7. 7. • Собрать и запустить ВЕСЬ самолёт Тестируемый объект Эмулятор ветра (mocked wind) • Протестировать крыло отдельно • Дорого • Долго • Трудно найти причину проблемы • Не всегда возможно! ЭмуляторыЭмуляторы
  8. 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)); Код системы: Юнит-тест:
  9. 9. В КОД !!!!!
  10. 10. НаблюдашкиНаблюдашки • Не всегда тесты впереди кода • В юнит-тестах НЕЛЬЗЯ использовать БД, SOA и т.д. • Чтобы потестировать, иногда надо порефакторить • Недостаточно одного вида тестирования
  11. 11. http://mockito.org http://www.acgavin.com/hamcrest-and-junit4-4

×