Я использую 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<Contract> foundContracts = m_contractService.findContractByOppId(m_contract.getOpportunityId());
Assert.assertEquals(foundContracts.get(0), m_contract);
} // testUpdateContract
есть три вызова службы ( "m_contractService.save", "m_contractService.save" и "m_contractService.findContractByOppId" ), и каждый из них рассматривается как транзакция, которую я хочу. Но я не знаю, как reset моя база данных в памяти в исходное состояние после каждого unit test.
Сообщите мне, если мне нужно предоставить дополнительную информацию.