Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第一次尝试Junit却失败了_Java_Junit - Fatal编程技术网

Java 第一次尝试Junit却失败了

Java 第一次尝试Junit却失败了,java,junit,Java,Junit,我第一次尝试使用Junit,但是遇到了一些意想不到的失败 以下是失败消息: org.opentest4j.AssertionFailedError:应为:但为: 如果有人能帮助我理解我的错误在哪里,那就太好了。 我花了30多分钟试图理解它背后的原因,但我无法理解。我想我需要在某个地方做点小改变 public class Fraction { private int numerator; private int denominator; public int getNum

我第一次尝试使用Junit,但是遇到了一些意想不到的失败

以下是失败消息: org.opentest4j.AssertionFailedError:应为:但为:

如果有人能帮助我理解我的错误在哪里,那就太好了。 我花了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;
    }

}

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

在调用assertEquals时,您的预期/实际值似乎出现了倒退。根据文档,第一个参数是期望值,第二个参数是实际值。所以你需要切换你的论点,因为现在你硬编码实际结果是19。您试图测试的调用应该是第二个参数,您期望返回的值应该是第一个参数。您在所有其他assertEquals调用中也在这样做,因此一定要同时更改这些调用。

您可以显示Fraction类的代码吗?成功运行是什么意思?代码正在根据您收到的消息运行。您希望测试用例通过吗?然后更改getNumerator方法以返回正确的结果。错误消息告诉您,在预期的19处,值实际上是2。请先。调试是一项需要培养的关键技能,如果你不学习,它只会变得更难。最好的学习方法是通过实践。如果你把它追溯到你不理解的某一行,这可能是这个网站的一个好问题。你的测试表明,该方法返回的是2,而不是你期望的19。此外,您还交换了这两个参数。哎呀,对不起,我的预期/实际值出现了倒退。
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);
    }
}