Я хочу представить концепцию модульных тестов (и тестирование в целом) моим коллегам; сейчас нет никаких тестов, и все проверяется путем фактического выполнения задач через пользовательский интерфейс, чтобы увидеть желаемый результат. Как вы можете себе представить, код очень тесно связан с точной реализацией - даже в результате получается код, который должен находиться в классе и повторно использоваться в системе, копируемой и вставляемой в методы.
Из-за изменившихся требований меня попросили изменить модуль, который я ранее написал, и он довольно слабо связан (не так много, как хотелось бы, но насколько я могу получить, не вводя много других концепций). Я решил включить набор модульных тестов с моим пересмотренным кодом, чтобы «доказать», что он работает, как ожидалось, и продемонстрировать, как работает тестирование; Я не следую истинному TDD, так как часть кода уже написана, но я надеюсь следовать некоторым концепциям TDD для нового кода, который мне придется создать.
Теперь неизбежно я уверен, что меня спросят, почему на написание кода у меня уходит больше дня или двух, поскольку части того, с чем я буду взаимодействовать, уже существуют в системе (хотя и без каких-либо тестов и очень жестко). в сочетании), и когда я проверяю код, меня спросят, что это за проект «Тесты». Я могу объяснить основы тестирования, но не могу объяснить фактические преимущества так, как это поняли бы другие (потому что они считают, что тестирование требует, чтобы вы запускали приложение самостоятельно, поскольку зачастую фактический пользовательский интерфейс важен для определения, работает ли эта функция). " или не). Они не понимают идею слабой связи (ясно видно из того факта, что ничто не является слабосвязанным; кроме написанного мною кода нет никаких интерфейсов), так что попытка использовать это в качестве выгоды, вероятно, принесет мне "А?" вид, и снова я не могу быть настолько свободным, как хотелось бы, без необходимости переделывать несколько существующих модулей и, возможно, представить какой-то контейнер IoC, который будет рассматриваться как напрасная трата времени, а не как «программирование».
Есть ли у кого-нибудь какие-либо предложения о том, как я могу указать на этот код и сказать «Мы должны начать создавать модульные тесты», не считая их снисходительными (например, «Написание тестов заставляет вас писать хороший код». Это, вероятно, будет означать код кроме моего это плохо ) или без того, чтобы это казалось пустой тратой времени, которое не добавляет никакой реальной ценности?