java - 如何测试 java.lang.Math 方法是否已被调用?

标签 java math junit mocking jmockit

我正在尝试编写代码来检查代码的实现是否依赖于 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/

相关文章:

java - 编程中的动态链接器是什么?

java - Android 中的唤醒锁无法打开屏幕

java - 配置虚拟主题: JMS - Java

即时编译算术运算序列

java - 如何在制作 jdbc 简单程序时消除此错误

c++ - HugeInt 的重载除法运算符

javascript - 在网络中绘制斐波那契数错误

java - 如何使用注解对 Spring Controller 进行单元测试?

java - 仅当抛出 6 IllegalArgumentException 时,我才需要 JUnit 传递

java - 代码工作正常,因为 web 服务在 junit 中出现错误