Для создания данных приборов для тестов у вас есть несколько вариантов:
(a) Создайте сценарий, который создает пустую базу данных, а затем добавляет небольшое количество записей в качестве данных фикстуры. Эти данные могут быть построены вручную, или несколько записей из реальной базы данных. Это подход Rails, довольно распространенный в мире Java.
(b) Для создания этих данных также часто используется «фабрика» (своего рода код приложения). Первоначальные инвестиции в создание этих классов существуют, но после их создания они могут быть повторно использованы для всех ваших тестов. Это сейчас очень популярно в Ruby / Rails-коде. (Это ваш второй подход выше.)
(c) Конечно, вы можете использовать копию «производственных» данных и попытаться проверить это. Но это, вероятно, самый сложный подход, так как вы всегда будете бороться с реальным миром, меняющим данные. И это также, как правило, на несколько порядков медленнее, чем небольшой набор данных о приборах.
Определенно, стоимость перехода из состояния (c) в состояние (a) или (b) определена, но это инвестиции в будущее. Это не займет много времени - даже если это займет целый день, ускорение в тестовом прогоне компенсирует это быстро.
У кого-то есть независимая проблема. После того, как вы поместите свои данные в базу данных, а затем запустите свои тесты, вам необходимо восстановить их. Есть несколько общих подходов:
(1) откат транзакции. Это отличный способ - если это практично. Однако иногда вам действительно нужно подтвердить, что транзакции завершены, поэтому это не работает.
(2) просто перезагрузите новый набор данных прибора. Если данные вашего прибора небольшие, это выполнимо. Немного медленнее, чем (1).
(3) отменить вручную то, что сделали тесты. Это наиболее подверженный ошибкам и сложный подход, но возможный.
Рекомендация
Похоже, ваше приложение сложное. Я бы порекомендовал для ваших тестов небольшой набор данных (а). Держите его отдельно от основной базы данных, чтобы его было легче отслеживать и перезагружать. Попробуйте откатить транзакции, но если это не сработает, вы можете перезагрузить сценарий перед каждым тестом (помните, что данные небольшие).
Другая часть головоломки - миграция базы данных, если у вас ее еще нет. Это сценарии, которые используют для развития вашей базы данных. Если они организованы и автоматизированы, вы можете применить их к своим данным испытаний / приборов, а также к производственным данным.