Mockito vs H2-In Memory用于测试使用Hibernate的项目

时间:2017-04-21 00:06:55

标签: java hibernate unit-testing junit

在我正在开发的项目中,我使用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();
    }
}

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

1 个答案:

答案 0 :(得分:2)

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