使用分数进行Junit测试

时间:2013-12-05 14:54:56

标签: 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");
    }

任何建议都将不胜感激。感谢

2 个答案:

答案 0 :(得分:2)

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

@Test
public void testGcd111_259() { 
    assertEquals(37, gcd(111, 259));
}

在以下情况下,您需要包含其他测试以检查gcd是否正常工作:

  • 两个数字中的一个是零
  • 两个数字都为零
  • 数字彼此相等
  • 这两个数字中的一个是1
  • 这两个数字中的一个是素数
  • 这两个数字都是素数
  • 数字互质而不是素数

答案 1 :(得分:0)

您可以使用与JUnit集成的精彩spock测试框架来完成此任务。

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
    }
}