DBUnit не очищает и не вставляет базу данных после каждого метода, поэтому тесты не являются независимыми

У меня есть тест для класса DAO, я использую DBUnit для создания и заполнения базы данных (используя дерби в памяти). У меня проблемы при тестировании метода обновления dao, потому что он изменяет данные, а затем другой тест не выполняется. Как все мы знаем, тест должен быть независимым от любого другого, и я знаю, что DBUnit имеет некоторые средства для очистки и восстановления базы данных после каждого теста. Но это не работает!

Код следующий (TestNG):

@BeforeMethod
public void prepareData() throws Exception {
  cleanAndPopulate("users");
}

public void cleanAndPopulate (String nameXML) throws Exception {
  IDatabaseConnection conn; 
  conn = new DatabaseConnection (sessionForTesting.connection());        
  InputStream is = DBconnection.class.getClassLoader()
    .getResourceAsStream(nameXML + ".xml");      
  dataset = new FlatXmlDataSet(is);
  System.out.println("*** Preparando base de datos de test"); 
  DatabaseOperation.CLEAN_INSERT.execute(conn, dataset); 
}

Это тест (отключен, чтобы избежать побочных эффектов):

@Test(enabled=false) // Deja la BBDD en estado erroneo!!!
public void busco_y_actualizo() throws Exception { 
    PacoUser resultado = userdao.getById(1L);
    resultado.setName("OTRO");
    userdao.update(resultado);
    PacoUser resultado2 = userdao.getById(1L);
    AssertJUnit.assertNotNull(resultado2); 
    AssertJUnit.assertEquals("OTRO", resultado2.getName());    
}
7
задан nowaq 13 December 2011 в 15:44
поделиться