По моему скромному мнению, разработка через тестирование - это нечто большее, чем сначала писать модульные тесты. Тестирование первого TDD больше связано с мыслью о том, что именно вы пытаетесь достичь с помощью кода, который собираетесь писать.
- Какими должны быть ваши критерии приемки?
- Когда ваш код будет «выполнен» и как он будет определен?
Написание модульных тестов перед кодом - это только один из способов формализации таких критериев приемлемости. Самым большим преимуществом, с моей точки зрения, Test first TDD является то, что вы тщательно продумываете и документируете (в модульных тестах, на бумаге, на белой доске), что критерии приемлемости предназначены для функции / истории, которую вы внедряем. Наличие такой документации также помогает определить объем выполненных работ.
Итак, независимо от того, пишете ли вы сначала функцию, а затем пишете для нее модульный тест, или вы решаете сначала написать тест, а затем кодировать функцию, она имеет вторичный характер. После того, как вы продумали и задокументировали свои критерии приемлемости, ваша выгода будет состоять в том, что ваша цель станет более четкой, и вы с большей вероятностью сосредоточитесь на выполнении критериев приемлемости, сводя к минимуму любой «шум» (например, было бы неплохо добавить функцию x, Я все сделал).
Конечно, это не означает, что мы идем дальше и пишем код, оставляя его без проверки, и пытаемся модифицировать модульные тесты, когда мы, например, уже закодировали 4 класса! Я просто думаю, что нет необходимости быть на 100% догматичными в написании модульных тестов перед тем, как использовать реальный код, поскольку преимущество TDD лежит в другом месте, но в любом случае наши модульные тесты должны идти в ногу с нашей растущей базой кода.