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