Как сбросить состояние базы данных после каждого модульного теста, не делая весь тест транзакцией?

используя 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») и каждый трактуется как транзакция, которую я хочу. Но я нене знаю, как сбрасывать мою базу данных в памяти в исходное состояние после каждого модульного теста.

Дайте мне знать, если мне нужно предоставить дополнительную информацию.

Ответы на вопрос(4)

Ваш ответ на вопрос