Я начинаю с привязки самого ценного поведения кода.
Например, если это валидатор, я начну с того, что он говорит, что действительные объекты ценны. Теперь мы можем продемонстрировать код, научить пользователей не делать глупостей и т. Д. - даже если валидатор никогда не будет реализован. После этого я начинаю добавлять крайние случаи, в первую очередь с самыми опасными ошибками проверки.
Если я начну с парсера, а не с пустой строки, я могу начать с чего-то типичного, но простого, которое я хочу проанализировать, и чего-то, что я хотел бы получить из этого. Для меня модульные тесты больше похожи на примеры того, как я собираюсь использовать код.
Я также следую практике BDD называть тесты should
- так что для вашего примера у меня будет shouldReturnNullIfTheInputIsEmpty()
. Это помогает мне определить следующую самую важную вещь, которую должен делать код.
Это также относится к BDD "снаружи-внутрь". Вот пара постов в блоге, которые я написал, которые могут помочь: Pixie Driven Development и Bug Driven Development . Разработка, основанная на ошибках, помогает мне понять, какой должен быть следующий набор функций на системном уровне, который затем помогает мне найти следующий модульный тест.
Надеюсь, это дает вам немного другую перспективу, в любом случае - удачи!