Моя текущая работа - в основном написание тестового кода GUI для различных приложений, над которыми мы работаем. Однако я нахожу, что я склонен копировать и вставлять много кода в тестах. Причина этого в том, что тестируемые области имеют тенденцию быть достаточно похожими, чтобы требовать повторения, но не настолько похожими, чтобы инкапсулировать код в методы или объекты. Я обнаружил, что, когда я пытаюсь использовать классы или методы более широко, тесты становятся более громоздкими для обслуживания, а иногда просто трудными для написания.
Вместо этого я обычно копирую большой кусок тестового кода из одного раздела, вставляю его в другой и делаю любые небольшие изменения, которые мне нужны. Я не использую более структурированные способы кодирования, такие как использование большего количества ОО-принципов или функций.
Чувствуют ли себя другие кодеры при написании тестового кода? Очевидно, что я хочу следовать принципам DRY и YAGNI, но я считаю, что тестовый код (в любом случае, автоматизированный тестовый код для тестирования GUI) может усложнить соблюдение этих принципов. Или мне просто нужно больше практиковаться в кодировании и улучшать общую систему действий?
РЕДАКТИРОВАТЬ: инструмент, который я использую, SilkTest, который на проприетарном языке называется 4Test. Кроме того, эти тесты в основном предназначены для настольных приложений Windows, но я также тестировал веб-приложения, используя эту настройку.