Junit.framework.AssertionFailedError +-* /有理,但预期值和结果相同

时间:2019-04-13 01:09:12

标签: java junit

我已经用+-* /合理性编写了代码,并尝试使用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)

1 个答案:

答案 0 :(得分:0)

assertEquals通过执行equals方法检查两个对象是否相同。 您是否在ImmutableRational类中覆盖了equals方法? 如果不是,那么它将仅检查它是否是同一对象,因此这是预期的行为,因为即使它们具有相同的值,它们也不是同一对象。