Tests avec une base de données

Transaction et Rollback

Pour tester un composant qui utilise une base de bonnées (DAO par exemple) fait bien se qu'on lui demande (lecture, insertion, modification, delete), il faut à chaque fois insérer des valeurs, les modifier, les effacer, vider la ou les tables). Cela devient très vite fastidieux.

Un moyen de simplifier les choses est de jouer le test dans une transaction.


Exemple :
@Test
public void testDB() throws Exception {

  Connection connection = getConnection();
  connection.setAutoCommit(false);    //begin transaction

  MyDao  myDao  = new MyDaoImpl(connection);

  try{
    
    myDao.insert("1","alex");
    myDao.insert("2","azerty");

    assertEquals("alex", myDao.read("1"));
    assertEquals("azerty", myDao.read("2"));

    myDao.update("1", "ALEX");
    myDao.update("2", "QWERTY");

    assertEquals("ALEX", myDao.read("1"));
    assertEquals("QWERTY", myDao.read("2"));

} finally {
    connection.rollback();   //rollback transaction
    connection.close();
  }  
}

Aucun commentaire:

Enregistrer un commentaire