tdd: arrange act assert на примере rhino mocks

Post on 21-Jun-2015

875 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Доклад с конференции Agile Base Camp 2011 (Киев, 16 апреля)

TRANSCRIPT

TDD: Arrange Act Assert на примере Rhino Mocks

СЕРГЕЙ КАЛИНЕЦ

http://tdd4.net

Немного обо мне

Сергей Калинец

Болен программированием с детства

Сейчас пишет под .Net

Фанат TDD (tdd4.net)

TDD: Arrange Act Assert на примере Rhino Mocks 2

План доклада

Arrange Act Assert

Rhino Mocks

AAA + Rhino Mocks

TDD: Arrange Act Assert на примере Rhino Mocks 3

Почему TDD туго идет

Неверно понимаются принципы

Сложно сменить стиль работы

Непонятно, как писать тесты

4TDD: Arrange Act Assert на примере Rhino Mocks :: Сергей Калинец

Организация теста: AAA

TDD: Arrange Act Assert на примере Rhino Mocks 5

Зачем нужен ААА?

Для чистоты…

 

TDD: Arrange Act Assert на примере Rhino Mocks 6

Зачем нужен ААА?

Для чистоты…

КОДА

TDD: Arrange Act Assert на примере Rhino Mocks 7

Чистый код

Его легко читать

 

 

TDD: Arrange Act Assert на примере Rhino Mocks 8

Чистый код

Его легко читать

В нем нет запахов (smells)

(не G-Код)

TDD: Arrange Act Assert на примере Rhino Mocks 9

AAA: пример (простой)

TDD: Arrange Act Assert на примере Rhino Mocks 10

Тестирование зависимостей

Классы часто взаимодействуют с другими классами

TDD: Arrange Act Assert на примере Rhino Mocks 11

Тестирование зависимостей

Классы часто взаимодействуют с другими классами

TDD: Arrange Act Assert на примере Rhino Mocks 12

Реальные объекты – просто…

 

 

 

TDD: Arrange Act Assert на примере Rhino Mocks 13

Реальные объекты – просто…

ОДНАКО

Тесты перестают быть модульными (юнит)

Реальные объекты не всегда доступны

Где брать эталонные данные?

TDD: Arrange Act Assert на примере Rhino Mocks 14

Нереальные объекты (дублёры)

TDD: Arrange Act Assert на примере Rhino Mocks 15

Rhino Mocks

Cоздает стабы и моки на лету

Fluent interface, лямбды, простой рефакторинг

Несколько синтаксисов, очень универсальный

TDD: Arrange Act Assert на примере Rhino Mocks 16

Rhino Mocks: основы

TDD: Arrange Act Assert на примере Rhino Mocks 17

Синтаксис 1

TDD: Arrange Act Assert на примере Rhino Mocks 18

Синтаксис 2

TDD: Arrange Act Assert на примере Rhino Mocks 19

Что тестируем?

TDD: Arrange Act Assert на примере Rhino Mocks 20

Тестирование поведения

Проверяем, что метод вызвался

С правильными параметрами

Нужное количество раз

Вернул ожидаемый результат или бахнул с ошибкой

TDD: Arrange Act Assert на примере Rhino Mocks 21

Тестирование состояния

Проверяем, что тестируемый объект находится в ожидаемом состоянии

TDD: Arrange Act Assert на примере Rhino Mocks 22

Два в одном

TDD: Arrange Act Assert на примере Rhino Mocks 23

Проблемы

Более одного Assert = G-Код

• >1 причины, почему может упасть тест

• Спасет только отладчик

Тестирование поведения часто избыточное

• «Сеть безопасности» начинает быть тесной

• Ухудшается изоляция тестов

TDD: Arrange Act Assert на примере Rhino Mocks 24

Проблемы

Более одного Assert = G-Код

• >1 причины, почему может упасть тест

• Спасет только отладчик

Тестирование поведения часто избыточное

• «Сеть безопасности» начинает быть тесной

• Ухудшается изоляция тестов

TDD: Arrange Act Assert на примере Rhino Mocks 25

Убираем (ослабляем) тестирование поведения

TDD: Arrange Act Assert на примере Rhino Mocks 26

Синтаксис 3

TDD: Arrange Act Assert на примере Rhino Mocks 27

Синтаксис 3

TDD: Arrange Act Assert на примере Rhino Mocks 28

ArrangeAct

Assert

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 29

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 30

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 31

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 32

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 33

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 34

А оно точно работает?

Вдруг нужные данные получены не из двойника?

TDD: Arrange Act Assert на примере Rhino Mocks 35

Иногда все же нужно

Методы без результатов

TDD: Arrange Act Assert на примере Rhino Mocks 36

Иногда все же нужно

Методы без результатов

TDD: Arrange Act Assert на примере Rhino Mocks 37

Иногда все же нужно

Методы без результатов

TDD: Arrange Act Assert на примере Rhino Mocks 38

Неоправданная сложность

TDD: Arrange Act Assert на примере Rhino Mocks 39

Неоправданная сложность

TDD: Arrange Act Assert на примере Rhino Mocks 40

Сухой остаток

Clean Code и AAA – это хорошо

Rhino Mock – отличный инструмент

Лучше тестировать состояние

Случайные значения в тестах рулят!

TDD: Arrange Act Assert на примере Rhino Mocks 41

СПАСИБО!

СЕРГЕЙ КАЛИНЕЦ http://tdd4.net

EMAIL: kalinets@gmail.com

SKYPE: sergiikalinets

TWITTER: @skalinets

42TDD: Arrange Act Assert на примере Rhino Mocks

top related