В моей компании у нас есть растущий набор тестов интеграции с использованием JUnit в веб-приложении Java. В каждом тесте используются некоторые конкретные внешние XML файлы для заполнения базы данных необходимыми данными для теста. Проблема заключается в следующем:
- Когда происходит изменение модели, мы долгое время исправляем все файлы XML (у нас есть сотни XML файлов, многие из них с избыточным кодом).
- Сложность создания файла XML вручную препятствует программисту исследовать различные сценарии.
- У нас нет связи между тестовыми данными и тестом (например, во время теста я не знаю "имя" пользователя, вставленного XML). Мы могли бы жестко скопировать нужную нам информацию, но это также увеличило бы время обслуживания, чтобы синхронизировать как XML, так и жестко кодированные данные.
Перед этой проблемой я начал думать об использовании собственной системы CRUD для генерации тестовых данных для каждого теста. В начале каждого теста я бы использовал некоторые методы для сохранения желаемых данных для теста. По моему видению, это решило бы все три проблемы, поскольку:
- Изменения в модели требуют изменения CRUD в любом случае, поэтому больше не потребуется исправлять тестовые данные.
- Было бы проще собрать, протестировать данные, потому что мы не будем беспокоиться о вещи, например, о совпадении идентификатора и внешнего ключа объекта вручную.
- У меня были бы все важные данные в переменных с синхронизацией, гарантированной IDE.
но для меня у него нет опыта и знаний, чтобы начать этот подход. Вопрос в том: Является ли это решение эффективным? Вызывает ли этот подход другие проблемы? Где я могу найти этот подход в литературе? Есть ли лучшее решение перечисленных проблем?