使用Junit4和Hibernate在java中测试DAO



测试DAO使用junit,主要是在hibernate中启动事务,调用compare函数,然后回滚事务。El的问题是,如果我在测试函数是一个事务错误,我不能剥离嵌套,我想​​实现DBUnitxml但管理似乎不是一个好主意,而且在这个例子中,我用这个方法做了足够多的测试用例。有人知道如何在不使用Junit或hibernate之外的任何东西的情况下修复它吗?

这是的一个例子

@Test
public void Test1GetByCodigo(){
String cod = "999999999";
DBTenant dbTenant = null; 
Session sess = null;
Transaction trans = null;
ClienteBO cli = null;
Clientes clie = null;
try{
try{
dbTenant = new DBTenant();
sess = dbTenant.getTenantSession();
trans = sess.beginTransaction();
}
catch(Exception e){
fail("Error en la carga de la transaccion.Quedo alguna transaccion abierta?");
}   
clie  = CargaCliente(cod);
sess.save(clie);
cli = cliBL.getByCodigo(cod);
}
catch(Exception e){
trans.rollback();
dbTenant.closeSession();
fail("Error la carga del cliente.Se modifico la bse de datos Clientes??");
}
trans.rollback();
sess.clear();
dbTenant.closeSession();
ClienteBO clieEsp = CargaClienteBO(clie);
assertNotNull(clieEsp);
assertNotNull(cli);
assertEquals("Error el cliente no coincide",clieEsp,cli);
}

如果cliBL.getbycodigo函数()tubiera事务会有错误,感谢的帮助

使用hibernate为该测试设置一个内存数据库,并让junit测试随心所欲地使用事务。因为数据库是在测试之前创建的,然后丢弃,所以隔离没有问题。这篇文章可能有助于

最新更新