Тестовые примеры Junit для программы «число в слово» - PullRequest
0 голосов
/ 02 ноября 2018
public class NumberWords {

    public String toWords(int number) {
        String result = "";
        if (number == -1) {
            result = "Number out of range";
        }
        if (number >= 0 && number <= 999) {
            if (number == 0) {
                System.out.println("NUMBER AFTER CONVERSION:\tZERO");
            } else {
                System.out.print("NUMBER AFTER CONVERSION:\t");
                numberToWord(((number / 100) % 10), " HUNDRED");
                numberToWord((number % 100), " ");
            }
        }else if(number >= 1000){
            System.out.println("Number not in range");
        }
        if (number == 0) {
            System.exit(number);
        }

        return result.trim();
    }

    public static void numberToWord(int num, String val) {
            String ones[] = {" ", " ONE", " TWO", " THREE", " FOUR", " FIVE", " SIX", " SEVEN", " EIGHT", " NINE", " TEN", " ELEVEN", " TWELVE", " THIRTEEN", " FOURTEEN", " FIFTEEN", " SIXTEEN", " SEVENTEEN", " EIGHTEEN", " NINETEEN"
            };
            String tens[] = {" ", " ", " TWENTY", " THIRTY", " FOURTY", " FIFTY", " SIXTY", " SEVENTY", " EIGHTY", " NINETY"};
            if (num > 19) {
                System.out.print(tens[num / 10] + " " + ones[num % 10]);
            } else {
                System.out.print(ones[num]);
            }
            if (num > 0) {
                System.out.print(val);
            }
        }
}

public class NumberWordsApplication {

    private final NumberWords numberWords;
    private final BufferedReader reader;

    public NumberWordsApplication() {
        numberWords = new NumberWords();
        reader = new BufferedReader(new InputStreamReader(System.in));
    }

    public void execute() {
        while (true) {
            try {
                System.out.print("\nPlease type a number between 1 and 999 OR (0 to exit) :  ");
                String value = reader.readLine();
                int number = Integer.parseInt(value);
                String toWords = numberWords.toWords(number);
            } catch (NumberFormatException | IOException e) {
                System.out.println("Invalid number");
            }
        }
    }

    public static void main(String[] args) {
        new NumberWordsApplication().execute();
    }
}

Это основной класс для генерации числа в слово, например, 57, тогда вывод должен быть "Пятьдесят семь"

Я хочу создать тестовые случаи для класса NumberWords, в котором я застрял

Разработка приложения для преобразования чисел в слова с использованием TDD

  1. Реализация основного приложения для чтения цифр с клавиатуры и распечатать значения
  2. На сервере перейдите к Numbers проект
  3. Запустите ant для сборки проекта. Сборка не удастся, если модульные тесты не пройдены.
  4. ~ / ant / bin / ant dist
  5. Результаты блока тесты находятся в каталоге отчетов, который был создан. приложение и попробуйте
  6. java –j Numbers.jar

1 Ответ

0 голосов
/ 03 ноября 2018

Поскольку это ( домашнее задание? ) вопрос о тестовой разработке, самые первые шаги будут:

  1. Создать очень простой контрольный пример, который проверяет, что число 1 сопоставлено с «ОДИН»
  2. Создайте очень простую реализацию, которая просто возвращает «ОДИН», когда ввод равен 1.
  3. Создайте встроенный скрипт (используя ant, если необходимо) для запуска этого теста.

Как только вы это настроите, вы можете постепенно добавлять больше тестов, пока ваш класс (который будет упрощенной версией NumberWords) не сможет преобразовать любой ввод.

Чтобы приложение тестировалось, лучше не использовать System.exit() и минимизировать код, включенный в while(true). Это легко сделать для данного задания.

Похоже, вы пытались применить TDD в неправильном порядке, выполняя тест-последний вместо разработки сначала-тест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...