Я прочитал много вопросов и ответов по TDD и модульному тестированию на SO, но не нашел ничего, что могло бы ответить на этот вопрос: с чего мне начать?
Я и команда уже выполнили несколько проектов, в которых мы приняли использование модульного тестирования для нашего кода ... но сначала код, а затем модульное тестирование. В какой-то момент процесса разработки стало вполне естественно сначала написать тест, а затем код, что привело нас к более TDD-стилю.
Теперь мы хотели бы сделать следующий шаг и попытаться начать новый проект с TDD с самого начала. Вот проблема ... с чего начать? Какой первый тест я напишу, когда у меня вообще не будет кода?
Скажем, просто чтобы иметь смысл думать о том, что мне нужно разработать интернет-приложение, ориентированное на документы, с небольшим рабочим процессом и ... чем-то еще.
Но давайте начнем с самого начала: во-первых, я хочу создать простую страницу со списком всех документов (метаданных), хранящихся в таблице в БД (довольно просто, а?).
Какой первый тест я напишу? Допустим, я использую Hibernate для доступа к БД ... я бы протестировал ipothetical метод getAllDocuments ()? Но должен ли я использовать фиктивный объект для замены Hibernate? Так что я тестирую?
Я немного запутался здесь ... более того, getAlDocuments (), вероятно, никогда не будет производственным методом ... вся коллекция документов будет упорядочена и отфильтрована чем-то ... имеет ли это смысл?
Любое предложение будет оценено
Отредактировано:
После прочтения ваших ответов (и аналогичной темы на http://programmers.stackexchange.com) у меня появилось лучшее видение TDD, но у меня все еще есть сомнение.
Я всегда думал, что TDD прежде всего должен выполнить модульное тестирование ... никогда не думал о сквозном тестировании.
Но позвольте мне спросить: TDD говорит, что вы должны написать тест и увидеть ошибку компиляции; затем вы создаете класс и метод, и вы получаете тестовый сбой; Затем вы реализуете метод и получаете тест пройден. Вы не можете писать код до тех пор, пока не пройдете тест; Вы не можете написать еще один тест, пока не пройдете все тесты. Я здесь?
Как я могу сделать сквозной тест как мой первый тест? Я должен написать весь код на всех уровнях, чтобы этот тест прошел. Но тогда у меня будет куча классов и методов, все из которых будут протестированы в моем сквозном тесте (разве я не должен называть это интеграционным тестом?). Это означает, что мне больше не понадобится модульное тестирование, потому что у меня уже есть тест, охватывающий мой код. И я не могу написать тест, который уже прошел, он против практики TDD.
Помогите мне понять этот шаг вперед, пожалуйста