我正在尝试编写代码来检查代码的实现是否依赖于 Java 中的 Math.sqrt()
。
我尝试将下面的代码与 JUnit 和 jMockit 一起使用,这会引发错误:
@Test
public void testSquareNumsWithoutSQRT(@Mocked final Math m) {
// ...
}
经过一些研究后,我现在明白为什么我不能模拟该库,但这仍然给我留下了最初的问题。有没有办法检查方法是否正在调用数学库?
最佳答案
您可以使用PowerMock模拟最终类和静态方法。但如果您必须使用 PowerMock,则意味着您的代码有问题。
请记住,为了避免脆弱的测试,您不应该测试实现,而应该测试结果。
有很多关于模拟的有用文章。请参阅this one例如。这是它的摘录:
The mocking structure become tightly coupled to implementation details causing many tests to break when those details are modified.
了解平方根的计算方式对您来说真的很重要,还是您更需要知道结果是否正确?
关于java - 如何测试 java.lang.Math 方法是否已被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471249/