如何解决IntelliJ 测试失败
嗨,我正在尝试使用测试用例测试我的 Calculator.java 类,但出现此错误:
java.lang.AssertionError: 预期: 但是是:main.Calculator@5bb21b69 预计:3 实际:main.Calculator@5bb21b69
这是我写的测试用例
public class CalculatorTest {
@Test
public void testCalculator(){
Calculator calculator = new Calculator();
calculator.calculate(5,2,'-');
Assert.assertEquals(3,calculator);
}
这是我的计算器课
package main;
public class Calculator {
public Double calculate(double first,double second,char operator) {
double result;
switch (operator) {
case '+':
result = first + second;
break;
case '-':
result = first - second;
break;
case '*':
result = first * second;
break;
case '/':
result = first / second;
break;
// operator doesn't match any case constant (+,-,*,/)
default:
System.out.printf("Error! operator is not correct");
return null;
}
return result;
}
}
解决方法
你有两个问题:
-
错误的实际值
-
浮点情况下的错误双重比较
Calculator calculator = new Calculator(); double value = calculator.calculate(5,2,'-'); // use result from calculation Assert.assertTrue(Math.abs(3 - value) <= 0.000001);
public class CalculatorTest {
@Test
public void testCalculator() {
Calculator calculator = new Calculator();
double actual = calculator.calculate(5,'-');
Assert.assertEquals(3.0,actual);
}
}
这个测试会失败,因为你除以双精度数,而不是整数。
,您试图断言您的测试结果 3
等于您的 calculator
对象。您希望断言的第二个参数是计算出的 value,而不是 calculator
对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。