2013-12-05 16 views
1

Im ищет советы по тестированию JUnit.Junit Testing with Fractions

Я понимаю основы, но я не уверен в этом. Его тестирование - самый большой общий делитель фракции.

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

И heres тест JUnit.

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

Любой совет будет оценен по достоинству. Спасибо

+2

Вы можете начать с проведения модульного теста. [Здесь] (http://www.vogella.com/articles/JUnit/article.html) учебник. –

+0

Мне непонятно, в чем вопрос. Я имею в виду, что в основном вы тестировали известные входы и выходы и выполняли условное. –

+0

Ну, подумайте, где этот код может провалиться. Делает ли это простой gcd? Он обрабатывает случаи, когда один или оба входа равны нулю? и т. д. и т. д. Напишите тестовый пример для каждого рассмотрения. –

ответ

2

Во-первых, вам понадобится более одного теста, чтобы увидеть, что функция верна. Каждый тест должен сделать одно утверждение о стоимости возвращенного gcd(x,y), как это:

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

Вы должны включать другие тесты, чтобы проверить, что ваш gcd работает отлично:

  • Один из двух чисел равно нулю
  • Оба числа равны нулю
  • числа равны друг другу
  • Один из двух чисел 1
  • Один из двух чисел является простым
  • Оба числа являются простыми
  • Числа взаимно просты, не будучи премьер
+0

. Пара 259 и 111 [заимствована здесь] (http://books.google.com/books?id=MsUmAAAAMAAJ&focus=searchwithinvolume&q=111%2C259). – dasblinkenlight

0

Вы могли бы сделать это с замечательной spock рамках тестирования, которая интегрируется с 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 
    } 
}