第一次尝试Junit失败

时间:2019-07-02 22:42:02

标签: java junit

我第一次尝试使用Junit,但是遇到一些意外的失败。

这是失败消息:
org.opentest4j.AssertionFailedError: expected: <2> but was: <19>.

如果有人能够帮助我了解我的错误在哪里,那就太好了。 我花了30多分钟来尝试了解其背后的原因,但我不能。我想我需要在某个地方做些小改动。

public class Fraction {
    private int numerator;
    private int denominator;

    public int getNumerator() {
        return numerator;
    }
    public int getDenomonator() {
        return denominator;
    }

    public Fraction(int n, int d) {
        numerator = n;
        denominator = d;

    }
    /**
     * This method is adding other fraction
     * to our current(this) fraction
     * @param otherFraction
     */
    public void add(Fraction otherFraction) {
        int a = numerator;
        int b = denominator;
        int c = otherFraction.getNumerator();
        int d = otherFraction.getDenomonator();
        numerator = a * d + b * c;
        denominator = b * d;

        int min = denominator;

        if (numerator < denominator) {
            min = numerator;                
        }

        int commonDiv = 1;

        for (int i = 1; i <= min; i++) {
            if ((numerator % i == 0) && (denominator % 1 == 0)) {
                commonDiv = i;
            }
        }

        numerator = numerator / commonDiv;
        denominator = denominator / commonDiv;

        if (numerator == 0) denominator = 1;
    }

}

测试:

class FreactionTest {

    @Test
    void test() {
        Fraction f1 = new Fraction(3,4);
        Fraction f2 = new Fraction(5,6);
        f1.add(f2);
        assertEquals(f1.getNumerator(),19);
        assertEquals(f1.getDenomonator(),12);
    }

    @Test
    void testAddNegative() {
        Fraction f1 = new Fraction(3,4);
        Fraction f2 = new Fraction(-3,4);
        f1.add(f2);
        assertEquals(f1.getNumerator(),0);
        assertEquals(f1.getDenomonator(),1);
    }
}

我希望代码能够成功运行。

1 个答案:

答案 0 :(得分:1)

在对assertEquals()的呼叫中,您似乎有预期/实际的倒退。根据文档here,第一个参数是期望值,第二个参数是实际值。因此,您需要切换参数,因为现在将actual的结果硬编码为19。要测试的调用应该是第二个参数,并且期望返回值应该是第一个参数。您还在其他所有assertEquals()调用中都这样做,因此请确保也进行更改。