java - +-*/ 有理数上的 Junit.framework.AssertionFailedError,但预期值和结果相同
问题描述
我已将代码编写到 + - * /rationals 并尝试使用 JUnit 对其进行测试,但出现错误,但预期值和结果值是相同的。有没有办法解决这个错误。
代码
public ImmutableRational Sub(ImmutableRational rValue)
{
int resultDenom = LCM(this.denominator,rValue.denominator);
int resultNum = (this.numerator * (resultDenom / this.denominator)) - (rValue.numerator *(resultDenom/ rValue.denominator));
ImmutableRational result = new ImmutableRational(resultNum,resultDenom);
return result;
}
测试
@Test
public void testSub_ImmutableRational() {
System.out.println("Sub");
ImmutableRational rValue = new ImmutableRational(2,3);
ImmutableRational instance = new ImmutableRational(3,4);
ImmutableRational expResult = new ImmutableRational(1,12);
ImmutableRational result = instance.Sub(rValue);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
//fail("The test case is a prototype.");
}
错误
Testcase: testSub_ImmutableRational(javarational.ImmutableRationalTest): FAILED
expected: javarational.ImmutableRational<1/12> but was: javarational.ImmutableRational<1/12>
junit.framework.AssertionFailedError: expected: javarational.ImmutableRational<1/12> but was: javarational.ImmutableRational<1/12>
at javarational.ImmutableRationalTest.testSub_ImmutableRational(ImmutableRationalTest.java:110)
解决方案
assertEquals 通过执行 equals 方法检查两个对象是否相同。您是否覆盖了 ImmutableRational 类中的 equals 方法?如果不是,那么它只检查它是否是同一个对象,因此这是预期的行为,因为它们不是同一个对象,即使它们具有相同的值。
推荐阅读
- python - 如何使用列表推导中创建的列表来附加另一个推导的数据?
- python - 是否可以在 spaCy 的实体链接候选生成中使用 NER-Label?
- python - 获取另一个列表中包含的列表中第一个元素的索引?
- phpmyadmin - MAMPPRO 禁止访问 phpmyadmin
- flutter - 即使在颤动中硬编码宽度,小部件的宽度也不均匀
- python - 堆栈数据框(python)
- c++ - QComboBox 中的项目需要多少像素?
- php - 无法在 Laravel 中使用 Ajax 请求提交模式表单
- c# - 向按钮添加值并获取总和
- core-data - swiftUI核心数据模型