【发布时间】:2011-12-02 00:11:37
【问题描述】:
我有一个 DAO 类的测试,我使用 DBUnit 创建和填充数据库(使用内存中的 derby)。 我在测试 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());
}
【问题讨论】:
-
您能提供更多信息吗?你的 cleanAndPopulate() 方法是否执行了?