单元测试Java Junit / Mockito

时间:2016-12-30 15:12:23

标签: java unit-testing junit mockito

我看到类似的问题,但没有按照我的要求正确回答。

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

伪代码:

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

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

这就是我设计的测试方法:

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

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

我知道有Mockito.verify或者我可以调用doNothing等。这只是调用方法并查看内部发生的情况。但是,通过调用这些方法,我无法进行数据验证。

如果有人能为此提出解决方案,那可能会很棒。

我举了一个例子,代码可供我使用。这是一般性问题。我的问题是在这里如何测试void方法?我的问题不是如何模拟void方法。由于void方法不返回任何内容,但它确实有一些逻辑,最后它更新了DB。我想测试实现的逻辑是否适用于不同的场景。情况是不能改变原来的方法 - 为那些方法编写单元测试。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你的方法没有返回任何东西的事实是无关紧要的。您可以像测试任何其他方法一样测试void方法:设置输入,调用方法,执行必需的断言。

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

相关问题