gpt4 book ai didi

java - Junit测试调用Dao类的Business类

转载 作者:行者123 更新时间:2023-12-01 09:29:55 25 4
gpt4 key购买 nike

我正在接手一个使用 Struts 和普通 JDBC 框架实现的产品。我计划在项目中实现Junit测试以加快测试速度。仅供引用,该项目尚未投入生产。这仍处于开发阶段,但使用的是非常古老的技术。该项目没有任何接口(interface)和各自的实现。像旧的编程一样,类是直接实例化并按原样使用的。所以,不能使用mockito框架。考虑到所有这些限制,我需要将 TDD 开发到项目中。我不能完全废弃它并用新技术来开发它。

我的问题是:我正在为业务层编写一个junit测试,以检查该方法是否有效。该商务舱也正在调用 DAO。由于测试时未创建数据库连接,因此会出现连接错误。如何编写junit测试来仅测试业务层?我是否需要在测试方法中包含 DAO 连接?如果是,我该如何实现这一目标?

我是 Junit 和 TDD 的新手。所以,如果我的理解有误,请指导我或解决这个问题。

最佳答案

你能重构你的代码吗?如果是这样,您可以从重构代码开始,为真正的 DAO 定义 DAO 接口(interface),实现新创建的接口(interface)的模拟版本,然后在单元测试中将它们注入(inject)到您的服务中。

在没有任何框架的情况下将 DAO 注入(inject)到服务类的最简单方法可能是构造函数注入(inject),即将 DAO 实例传递给服务类构造函数。

public class YourService {
private final YourDAOInterface dao;

public YourService(YourDAOInterface dao) {
this.dao = dao;
}
}

这里构造函数dao的参数可以是一个真实的DAO,也可以是用于测试的模拟实现(你需要让这两个DAO实现相同的接口(interface)YourDAOInterface)。

关于java - Junit测试调用Dao类的Business类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com