Mam test dla klasy DAO, używam DBUnit do tworzenia i zapełniania bazy danych (przy użyciu derby w pamięci). Występują problemy podczas testowania metody aktualizacji dao, ponieważ powoduje ona modyfikację danych, a drugi test kończy się niepowodzeniem. Jak wszyscy wiemy, test powinien być niezależny od jakiegokolwiek innego i wiem, że DBUnit ma pewne możliwości czyszczenia i regeneracji bazy danych po każdym teście. Ale to nie działa!DBUnit nie czyszczenia i wstawiania bazy danych po każdej metodzie, więc test nie są niezależne
Kod jest to (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);
}
To jest test (wyłączone, aby uniknąć skutków zabezpieczenia):
@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());
}
Czy możesz podać więcej informacji? Czy twoja metoda cleanAndPopulate() jest wykonywana czy nie? – chkal