Я только что начал новый проект, и теперь, когда ASP.NET MVC разрабатывается чрезвычайно сложным образом, я решил, что настало время начать с модульного тестирования. Большая часть моего кода свежая, и я пишу тесты, прежде чем писать фактический производственный код.
Мое расстройство, тем не менее, заключается в том, что я трачу гораздо больше времени на исправление ошибок в своих тестах, чем на то, чтобы исправить что-то не так с моими производственными тестами.
Мой типичный рабочий процесс заканчивается примерно следующим образом:
- Записать заглушку
- Записать тест
- Убедитесь, что тест не выполнен.
- Заполните заглушку
- Тест все еще не работает, поэтому потратьте время на ожидаемый и фактический вывод.
- Ошибка оказывается в тесте, а не в самом коде. Исправьте тест.
Если вы подумаете об этом, это можно ожидать: модульные тесты включают в себя создание вывода вручную и, следовательно, склонность к ошибкам; код, написанный на строгом языке и имеющий хорошие методы кодирования, имеет поведение, которое указано очень автоматически.
Конечно, есть моменты, когда мой производственный код является фактической причиной неудачного теста, но он просто очень редко встречается.
Нет никаких оснований полностью исключать единичные тесты; бывают случаи, когда я просто не доверяю своему коду вообще. С другой стороны, я начинаю чувствовать, что это не все, что ценно, особенно в первую очередь в области тестирования.
Кто-нибудь еще чувствует это?