У меня есть тест для класса 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());
}