【问题标题】:Test DAO in java using Junit4 and Hibernate使用 Junit4 和 Hibernate 在 Java 中测试 DAO
【发布时间】:2012-10-06 15:07:59
【问题描述】:

使用junit测试DAO,主要是我在hibernate中启动一个事务,调用比较函数,然后回滚事务。问题是如果我在测试函数是一个事务错误,我不能strip nest,我想过实现DBUnit xml的想法,但管理似乎不是一个好主意,在这种情况下我用这种方法做了足够多的测试用例。 任何人都知道如何在不使用 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 function() tubiera 一个事务会有bug,谢谢你的帮助谢谢

【问题讨论】:

  • 如果cliBL.getbycodigo函数()有事务会有bug,谢谢大家帮忙谢谢
  • 我正在使用 HibernateUtil 创建 SessionFactory。 HibernateUtil 在应用程序的正常运行期间工作正常,但是当我尝试运行 JUnit4 测试时它给出了 ExceptionInInitializer 错误。请帮忙。
  • 能否分享您的 DBTenant 代码。

标签: hibernate unit-testing transactions junit4


【解决方案1】:

使用 hibernate 为这个测试设置一个内存数据库,让 junit 测试尽可能多地使用事务。因为数据库是在测试之前创建并在之后丢弃的,所以隔离没有问题。这个article 可能会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多