Я разрабатываю кросс-платформенный проект, который будет поддерживать:
- Четыре компилятора С++ - GCC, MSVC, SunStudio, Intel,
- Пять операционных систем: Linux, OpenSolaris, FreeBSD, Windows, Mac OS X.
Я полностью понимаю, что без надлежащего модульного тестирования нет возможности выполнить надлежащий QA на всех этих платформах.
Однако, как вы все знаете, написание модульных тестов крайне скучно и замедляет процесс разработки (потому что это скучно, и разработка программного обеспечения FOSS не должна быть такой)
Как вам удается написать хороший код модульного тестирования и не прекращать писать код.
Если вы хотя бы получите зарплату за это, вы можете сказать - по крайней мере, я что-то получу для этого, но если вы этого не сделаете, это намного сложнее!
Разъяснение:
Я понимаю, что TDD должен быть ключевым, но TDD имеет очень строгие ограничения:
- У вас есть точные спецификации.
- Вы полностью определили API.
Это справедливо для проекта, разработанного в стиле клиента-поставщика, но для проекта не может быть выполнено развивается.
Иногда, чтобы решить, какая функция мне нужна, я должен что-то создать и понять, хорошо ли это работает, если API подходит и помогает мне, или он уродлив и не удовлетворяет меня.
Я вижу, что процесс развития больше похож на эволюцию, меньше развития в соответствии со спецификациями. Потому что, когда я начинаю внедрять какую-то функцию, иногда я не знаю, если это будет хорошо работать и какая модель будет использоваться.
Это совсем другой стиль разработки, который противоречит TDD.
С другой стороны, поддержка широкого спектра систем требует модульных тестов, чтобы убедиться, что существующий код работает на разных платформах, и если я хочу поддерживать новый, мне нужно только компилировать код и запускать тесты.