我已经用+-* /合理性编写了代码,并尝试使用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)
答案 0 :(得分:0)
assertEquals通过执行equals方法检查两个对象是否相同。 您是否在ImmutableRational类中覆盖了equals方法? 如果不是,那么它将仅检查它是否是同一对象,因此这是预期的行为,因为即使它们具有相同的值,它们也不是同一对象。