Модульное тестирование для пользовательских входов - Java - PullRequest
1 голос
/ 20 ноября 2010

Я пытаюсь написать модульные тесты для игры, которую я создал. Игра представляет собой реализацию Tic Tac Toe, которая взаимодействует с пользователем и принимает ввод из командной строки. Я не уверен, как я могу написать тест, который будет принимать и проверять пользовательский ввод. Например: При запуске: программа запрашивает у пользователя имя и его символ («x» или «0») и затем продолжайте принимать входные данные позиции.

Создать ли метод @Before и написать операторы ввода внутри этого метода? или есть лучший способ сделать это? Запись всего в моем методе @Before сделает его чрезвычайно большим.

Есть предложения? Пожалуйста, помогите.

Спасибо

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

В идеале вы должны разделить свой входной класс на интерфейс и реализацию, а затем создать MockInput для целей тестирования.

interface IUserInput {
  public String getUserName();
  public XO_Enum getUserSymbol();
}

class MockUserInput implements IUserInput {
    private XO_Enum xo;
    private String name;
    public MockUserInput(String name_, XO_Enum xo_) {
      xo = xo_;
      name = name_;
    }
    public String getUserName() { return name; }
    public XO_Enum getUserSymbol() { return xo; }
}

Когда для какого-либо теста требуется ложный пользовательский ввод, вы просто набираете скоростьиздеваться над случаем и продолжать идти.Символ и имя могут быть жестко запрограммированы, но этот способ дает вам некоторую гибкость.

Учитывая ответ Хафеза, один из нас явно отвечает на неправильный вопрос ... и я не уверен, что это он.Ах, хорошо, это будет полезно в любом случае.

1 голос
/ 20 ноября 2010

Вы говорите, что хотите написать

тест, который будет принимать и проверять пользовательский ввод

У вас не должно быть одного класса, который бы одновременно принимал и проверял пользовательский ввод, это плохая сплоченность. Вместо этого имейте два класса Validator (или средство проверки или как вы хотите его называть) и процессор ввода, который принимает пользовательский ввод и создает некоторый объект, который Validator понимает.

После того, как вы разделите проблемы, написание тестового примера junit для вашего Validator должно быть достаточно простым. Что касается пользовательского класса ввода, взгляните на этот вопрос о том, как выполнить модульное тестирование консольного приложения

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