Как сбросить состояние базы данных после каждого модульного теста, не делая весь тест транзакцией?
используя Spring 3.1.1.RELEASE, Hibernate 4.1.0.Final, JPA 2, JUnit 4.8.1 и HSQL 2.2.7. Я хочу запустить некоторые тесты JUnit для своих методов обслуживания, и после каждого теста я хотел бы откатить любые данные, записанные в базу данных в памяти. Однако я НЕ хочу, чтобы весь тест рассматривался как транзакция. Например, в этом тесте
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" })
public class ContractServiceTest
{
…
@Autowired
private ContractService m_contractService;
@Test
public void testUpdateContract()
{
// Add the contract
m_contractService.save(m_contract);
Assert.assertNotNull(m_contract.getId());
// Update the activation date by 6 months.
final Calendar activationDate = Calendar.getInstance();
activationDate.setTime(activationDate.getTime());
activationDate.add(Calendar.MONTH, 6);
m_contract.setActivationDate(activationDate.getTime());
m_contractService.save(m_contract);
final List foundContracts = m_contractService.findContractByOppId(m_contract.getOpportunityId());
Assert.assertEquals(foundContracts.get(0), m_contract);
} // testUpdateContract
Есть три звонка в сервис, ("m_contractService.save ","m_contractService.save», а также "m_contractService.findContractByOppId») и каждый трактуется как транзакция, которую я хочу. Но я нене знаю, как сбрасывать мою базу данных в памяти в исходное состояние после каждого модульного теста.
Дайте мне знать, если мне нужно предоставить дополнительную информацию.