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

New*_*bie 1 java junit unit-testing hibernate

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

1. Mockito
2. H2-In Memory for testing
Run Code Online (Sandbox Code Playgroud)

这是我的班级

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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