如何断言方法是用 mockito 调用的

How to assert that methods are called with mockito

我想多问一个与测试相关的概念性问题。我正在使用 Mockitos 进行单元测试。

我有一个方法可以做很多事情。它内部调用的所有方法都是void方法,这些方法又会做一些其他的动作。有问题的方法可以无例外地或无例外地完成。没有编写 assert 语句的范围,因为它主要调用 void 方法。此外,我已经为这个 class.

的所有其他方法编写了独立的单元测试

我的问题是如果我需要测试覆盖率,我应该为所有方法编写测试用例。但是,我没有为我的方法之一找到任何有效的断言。从单元测试覆盖率的角度来看,所讨论的方法是一种重要的方法。当我 运行 我的测试时,我确实在日志中看到这些方法执行得很好,但实际上没有什么可以断言的。遇到这种情况怎么办?

1) 保持方法不变,不带任何断言?它仍在检查是否一切正常

2) 创建 2 种方法,一种是预期异常(否定测试用例),另一种是没有断言的常规测试方法。 (这基本上表明我已经涵盖了积极和消极的情况)。我这里仍然没有任何断言。

这是正确的方法还是有更好的方法来处理这个问题?

如果您没有任何值得断言的东西,您可以尝试验证。

verify(someMock, times(x)).someMethod();

文档中有关使用 Mockito 进行验证的更多信息:https://mockito.googlecode.com/hg-history/1.5/javadoc/org/mockito/Mockito.html

为什么没有什么可断言的?如果你 运行 你的方法,让 A 成为宇宙。如果您不使用 运行 您的方法,则让 B 成为宇宙。如果 A == B 则停止调用该方法,它什么也没做。如果 A != B 则断言它们的不同之处为真。

即,您的方法实际上在做什么?那应该是你测试的一部分。