Comment puis-je réinitialiser mon état de base de données après chaque unité de test sans test d'une transaction?

Je suis en utilisant le Printemps 3.1.1.LIBÉRATION, Hibernate 4.1.0.Final, JPA 2, JUnit 4.8.1, et HSQL 2.2.7. Je veux exécuter certains tests JUnit sur mes méthodes de service, et après chaque essai, je voudrais toutes les données écrites dans la base de données en mémoire pour être restaurées. Cependant, je ne veux PAS l'ensemble de test pour être traitée comme une transaction. Par exemple, dans ce test

@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

il y a trois appels vers le service ("m_contractService.enregistrer", "m_contractService.enregistrer", et "m_contractService.findContractByOppId") et chacun est traité comme une transaction, ce qui je veux. Mais je ne sais pas comment réinitialiser ma base de données en mémoire à son état d'origine après chaque test unitaire.

Permettez-moi de savoir si j'ai besoin de fournir des informations supplémentaires.

pourquoi voulez-vous éviter l'opération?
Voir aussi stackoverflow.com/questions/24854527/...

OriginalL'auteur Dave | 2013-01-15