在Java Junit/Mockito中对void方法进行单元测试



>我看到了类似的问题,但没有像我正在寻找的那样正确回答。

我有 void 方法,它根据其他一些数据库值对模型对象进行一些更改,然后将其再次保存回数据库。

伪代码:

User{
List<Mark> marks;
String fullName;
int grade;
date dob;
}

逻辑是通过调用另一个服务来应用一些公式来更新用户等级。

这是我设计测试它的方式:

我可以给带有标记的User对象作为输入。我将通过提供公式来模拟服务,以确定根据分数确定等级。我想在保存之前测试对象的最终User是否与我的期望相匹配。

我知道我可以将其移动到单独的方法并返回对象,以便可以对其进行单元测试。我在这里看到的是是否有任何方法可以测试 void 方法中的逻辑来验证更新的对象。在我们的项目中,我有几种类似的方法。

我知道有Mockito.verify或者我可以像doNothing等一样打电话。这只是调用方法并查看内部发生了什么。但是我无法通过调用这些方法进行数据验证。

如果有人能为此提出解决方案,那就太好了。

我举了一个例子,代码对我可用。不过,这是一个通用问题。我的问题在这里如何测试无效方法?我的问题不是如何模拟无效方法。由于 void 方法不返回任何内容,但它执行一些逻辑,最后更新 DB。我想测试实现的逻辑是否适用于不同的场景。情况是无法更改原始方法编写这些方法的单元测试。有什么建议吗?

你的方法不返回任何内容这一事实是无关紧要的。您可以测试与任何其他方法相同的 void 方法:设置输入、调用方法、执行所需的断言。

如果我理解正确,您遇到的问题是该方法不返回任何内容,但是当您传入初始User对象时,您已经对该对象的引用,因此您仍然可以在 void 方法完成后执行您需要的任何断言。

相关内容

  • 没有找到相关文章

最新更新