Java 用分数进行Junit测试

Java 用分数进行Junit测试,java,junit,Java,Junit,我在寻找一些关于JUnit测试的建议 我了解基本知识,但我不确定这一点。它测试分数的最大公约数 // Greatest Common Divisor public static int gcd(int x, int y) { return (y == 0) ? x : gcd(y, x % y); } 这是JUnit测试 @Test public void testGcd() { fail("Not yet implemented"); }

我在寻找一些关于JUnit测试的建议

我了解基本知识,但我不确定这一点。它测试分数的最大公约数

     // Greatest Common Divisor
public static int gcd(int x, int y) {
    return (y == 0) ? x : gcd(y, x % y);
}
这是JUnit测试

@Test
    public void testGcd() {
        fail("Not yet implemented");
    }

如有任何建议,将不胜感激。谢谢

首先,您需要进行多次测试才能确认功能是否正确。每个测试用例都应该对gcd(x,y)返回的值做出一个断言,如下所示:

@Test
public void testGcd111_259() { 
    assertEquals(37, gcd(111, 259));
}
您需要包括其他测试,以检查您的
gcd
在以下情况下是否正常工作:

  • 两个数字中有一个是零
  • 两个数字都是零
  • 这些数字是相等的
  • 两个数字中的一个是
    1
  • 这两个数字中有一个是素数
  • 两个数字都是素数
  • 不带素数的数互质

您可以使用与JUnit集成的优秀测试框架来实现这一点

class GCDTest extends Specification {
    def "greatest common denominator of two numbers"() {
        expect:
            MyMathUtils.gcd(a, b) == c

        where:
            a   | b   | c
            1   | 1   | 1
            2   | 1   | 1
            2   | 2   | 2
            10  | 15  | 5
            111 | 259 | 37
    }
}

您可以从实现单元测试开始。教程。我不清楚问题是什么。我的意思是,基本上你要测试已知的输入和输出,并练习条件。好吧,想想这段代码可能会失败的地方。它能做一个简单的gcd吗?它是否处理其中一个或两个输入为零的情况?等等,等等。为每个考虑事项编写一个测试用例。删除
fail
并用测试对259和111替换它。