Тестовая структура TDD Вопрос - PullRequest
5 голосов
/ 14 июня 2011

Итак, скажите, что я делаю TDD, и я пишу такой тест:

public void testDeposit()
{
    Bank b = new Bank();
    b.deposit(100);
    AssertEquals(100, b.balance);
}

Тогда я иду и делаю тестовый проход, перехожу к следующему. Скажем, я делаю это несколько раз подряд и получаю депозиты, снятие средств и амортизацию - все работает.

Тогда скажите, что я хочу написать тест, который проверяет, кто-то создает учетную запись и делает комбинацию всего. Разве это технически не является интеграционным тестом, а не модульным тестом? Если да, соответствует ли это TDD или TDD должен состоять только из модульных тестов.

В основном я спрашиваю, потому что, если этот тест не пройден, скорее всего, один из других тестов должен сломаться, а если нет, я, вероятно, просто не тестировал их с нужным количеством сценариев. Поэтому следует ли мне проводить интеграционные тесты в том же домене, что и модульные тесты, когда речь идет о TDD, или они должны быть записаны в другом классе / файле где-то еще и выполняться отдельно?

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

Я думаю, что высокоуровневые тесты могут быть частью рабочего процесса TDD. Например, тестирование «вовне» может быть очень эффективным способом определения новых функций. Начните с некоторого приемочного теста уровня пользовательского интерфейса для новой функции, напишите интеграционные тесты для компонентов, которые должны существовать, чтобы обеспечить эту функцию, и напишите модульные тесты, чтобы управлять реализацией каждого компонента.

Я думаю, что вы должны четко различать ваши типы тестов и не смешивать их вместе, но может иметь смысл включить все из них в процесс TDD.

2 голосов
/ 14 июня 2011

Граница между интеграционными и юнит-тестами может быть немного размытой; Во время выполнения TDD целесообразно тестировать «до» уровня интеграции, просто чтобы получить подтверждение функциональности, но во время TDD определенно излишне проводить «комплексные» интеграционные тесты (обратите внимание, что там есть подробные цитаты). *

По сути, существует значительный аспект "призыва к суждению"; ваш опыт должен быть хорошим ориентиром в отношении соответствующего уровня, чтобы прекратить добавлять тесты в режиме TDD.

...