【问题标题】:Mockito vs H2-In Memory to test a project that uses HibernateMockito vs H2-In Memory 测试使用 Hibernate 的项目
【发布时间】:2017-04-21 00:06:55
【问题描述】:

在我正在进行的一个项目中,我使用 Hibernate 与数据库进行交互。我正在尝试测试 Hibernate 类中的方法。我遇到了两件事。

1. Mockito
2. H2-In Memory for testing

这是我的课

UserDAOImpl.java

public class UserDAOImpl implements UserDAO {
    public static final Logger LOG = LoggerFactory.getLogger(UserDAOImpl.class);
    private static Session session;

private static void beginSession() {
    session = DbUtils.getSessionFactory().openSession();
    session.beginTransaction();
}

@Override
public void addUser(String username, String password) {
    User user = new User(username, password);
    beginSession();
    session.save(user);
    session.getTransaction().commit();
    session.close();
    }
}

对上面的类进行测试,这是一个很好的方法。 我应该使用模拟来编写 Junit 测试还是使用内存数据库进行测试。 我不想用我用于开发的数据库来测试它,因为测试用例会破坏它。

【问题讨论】:

    标签: java hibernate unit-testing junit


    【解决方案1】:

    通常在企业中,您会编写两种类型的测试用例。一个单元测试用例,您将使用 Mockito 存根对象,如存储库对象等。这个想法是即使数据库不可用,您的功能也是可测试的。另一组是集成测试用例。这实际上将连接到支持的所有资源等以进行端到端测试。您可以使用 Maven 的 surefire 插件在运行时运行测试用例。名称以“Test”结尾的类被认为是单元测试用例,以“IT”结尾的类是集成测试用例。示例(“SomeTest”,SomeIT)。要回答您的问题,您需要 Mockito 和 H2,其中 H2 是您的应用程序的资源/后端

    【讨论】:

      猜你喜欢
      • 2016-06-19
      • 2016-01-28
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      相关资源
      最近更新 更多