我看到类似的问题,但没有正确回答,因为我正在寻找。Java中的单元测试void方法Junit/Mockito
我有void方法,它根据其他一些DB值对Model对象进行一些更改,然后再次将其保存回数据库。
伪代码:
User{
List<Mark> marks;
String fullName;
int grade;
date dob;
}
的逻辑是通过调用另一个服务应用一些公式来更新用户级。
这是我用来测试它:
我可以给User
物体标记作为输入。我将通过提供公式来确定每个商标的等级来嘲笑服务。我想测试最后的User
对象与我在保存前预期的内容相匹配。
我知道我可以将其移动到单独的方法并返回对象,以便可以进行单元测试。我在这里看到的是如果有任何方法来测试void方法内部的逻辑来验证更新的对象。我在我们的项目中有几个类似的方法。
我知道有Mockito.verify
或我可以打电话像doNothing
等。这只是调用方法,看看里面发生了什么。但是我没有通过调用这些方法来获得数据验证。
如果有人能为此提出解决方案,那可能会很好。
我举了一个例子,代码可用于我。尽管这是一个通用的问题。我的问题是在这里如何测试一个无效的方法?我的问题不是如何嘲讽一种无效的方法。由于void方法不会返回任何内容,但它会执行一些逻辑并最终更新数据库。我想测试执行的逻辑是否适用于不同的场景。情况不能改变原始方法 - 为这些方法编写单元测试。有什么建议么?
“_我知道我可以移动它来分离方法并返回对象,以便可以进行单元测试。”< - 这样做。 – jaco0646
感谢@ jaco0646为您的快速响应。但是你的意思是没有办法在java单元测试中验证void方法中的数据吗? – Shamseer
我不是说你不可以。我说你不会。不要在复杂的测试中绕过设计问题。修复设计。 – jaco0646