2015-08-17 6 views
-1

я пытаюсь решить эту проблему:Junit Тест для алгоритма

Написать функцию, настойчивость, которая принимает в положительном параметре NUM и возвращает его мультипликативную настойчивость, которая является количеством раз, вы должны умножить цифры в NUM, пока вы не достигнете одноразрядное

Это код, который я написал: тест

public class Hello { 
     static int counter = 0; 
     public static int persistence(long n) { 
     int digits = digit_count(n); 
     if (digits <= 1) { 
      return 0; 
     } 
     persistence(product(n)); 
     counter++; 
     return counter; 
     } 
     public static int product(long n) { 
     int productValue = 1; 
     while (n != 0) { 
      productValue *= n % 10; 
      n /= 10; 
     } 
     return productValue; 
     } 

     public static int digit_count(long n) { 
     int count = 0; 
     while (n > 0) { 
      n /= 10; 
      count++; 
     } 
     return count; 
     } 

и JUnit:

assertEquals(3, Hello.persistence(39)); 
assertEquals(0, Hello.persistence(4)); 
assertEquals(2, Hello.persistence(25)); 
assertEquals(4, Hello.persistence(999)); 

испытание терпит неудачу на 25 и 999, но если я пытаюсь вызвать Hello.persistence (25) и Hello.persistence (999) в основного метода, который я получил необходимые значения. Пожалуйста, объясните, как это возможно?

+0

Нет, первые два утверждения хорошо работают –

ответ

0

Вы не возвращаясь состояние counter к 0 между запусками:

Hello.persistence(39); 
//counter is now equal to 3, furter invocations will add "3" to the result 
+0

Да, действительно. Большое спасибо. Я должен избавиться от статической переменной –

1

Вы должны смотреть на ваши результаты и спрашивать «Почему я не получаю то, что я думаю, что я должен получать?». Используя отладчик, вы обнаружите, что ваш счетчик не сбрасывается, прежде чем вы вызовете persistance снаружи. Hello.persistance(39) устанавливает счетчик на 3, а затем Hello.persistance(4) возвращает твердое кодированное значение 0.

Создайте новый класс для каждого из ваших тестовых примеров, и все будет в порядке.

+0

Благодарим за помощь –

Смежные вопросы