Я искал вокруг, но не смог определить, возможен ли следующий подход/хорошая практика. В основном, я хотел бы сделать следующее:Оберните весь тест DBUnit/JUnit под одной транзакцией
Создать JUnit Тесты, которые используют DBUnit для инициализации данных. Выполните несколько тестовых методов, каждый из которых запускает один и тот же исходный набор данных. Откат после каждого метода тестирования обратно в состояние сразу после начальной функции setUp. После того, как все методы тестирования выполняют откат, любые изменения, которые были сделаны в функции setUp. На данный момент данные в базе данных должны быть точно такими же, как до запуска тестового класса JUnit.
В идеале мне не пришлось бы повторно инициализировать данные перед каждым тестовым случаем, потому что я мог бы просто вернуться к состоянию сразу после setUp.
Я смог откатить отдельные методы тестирования, но не смог отменить изменения, сделанные в setUp после того, как все методы тестирования запущены.
ПРИМЕЧАНИЕ. Мне известно о различных функциях DBUnit, таких как CLEAN_INSERT, DELETE и т. Д. Я использую среду Spring для ввода моего источника данных.
Пример макет будет выглядеть следующим образом:
public class TestClass {
public void setUp() {
// Calls a method in a different class which uses DBUnit to initialize the database
}
public void runTest1() {
// Runs a test which may insert/delete data in the database
// After running the test the database is in the same state as it was
// after running setUp
}
public void runTest2() {
// Runs a test which may insert/delete data in the database
// After running the test the database is in the same state as it was
// after running setUp
}
// After runTest1 and runTest2 have finished the database will be rolled back to the
// state before any of the methods above had run.
// The data will be unchanged as if this class had never even been run
}
я бы запускать тесты в базе данных разработки, однако я предпочел бы, чтобы не повлиять на какие-либо данные в настоящее время в базе данных. Я в порядке с запуском CLEAN_INSERT в начале инициализации данных, однако после запуска всех методов тестирования я хотел бы, чтобы данные вернулись к тому, как это было до того, как я запустил свой тест JUnit.
Заранее спасибо