Одним из способов может быть вывод вашей логики инициализации на внешний сервис с помощью транзакционных методов, которые выполняются из аннотированных методов @BeforeTransaction и @AfterTransaction в тестовом классе.
Еще одним преимуществом этого подхода является возможность многократного использования кода инициализации в тестах.
Например, вы можете использовать SpringJunit4ClassRunner, как описано здесь , например:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"testContext.xml","services.xml"})
public class MyServiceTest {
@Autowired
private TestDataService testDataService;
@Before
public void setUp(){
testDataService.addTestData();
}
@Test
public void testSomething() throws Exception {
// ...
}
}
public interface TestDataService {
void addTestData();
}
public class TestDataServiceImpl implements TestDataService {
@Transactional
public void addTestData(){
// TODO
}
}
Это то, что мы делаем в наших проектах на базе Spring.
Убедитесь, что транзакционная конфигурация правильная. Если вы хотите избежать разделения класс / интерфейс, установите для элемента proxy-target-class значение true в элементе.