Тесты Java: работает только первый ответ. Что мне следует изменить?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тесты Java: работает только первый ответ. Что мне следует изменить?

Сообщение Anonymous »

@Test
void testRowX() {
// given

String sizeOfBoardString = "3\n2";
ByteArrayInputStream inputStream = new ByteArrayInputStream(sizeOfBoardString.getBytes());
System.setIn(new ByteArrayInputStream(sizeOfBoardString.getBytes()));

// when
OutputComputer outputComputer = new OutputComputer();
outputComputer.gameStart();
outputComputer.gameType();
InputSelector inputSelector = new InputSelector();
int boardSize = inputSelector.boardType();

StartGame startGame = new StartGame();
startGame.runGame(boardSize, boardSize);

String whoWin = "Won X";

// then
assertEquals("Wona X", whoWin);
}

У меня возникла проблема с тестами на Java. На данный момент я знаю, поставлю ли я String sizeOfBoardString = "3\n2"; Мне нужно ответить на 2 вопроса из программы, но есть еще запрос на ответ.
Подводя итог, я пытаюсь протестировать программу «тик-такто». Я спрашиваю размер доски, и она принимает значение. Но когда я спрашиваю, компьютер это или человек, мне отвечают, что это не имеет значения. Но, по моему мнению, из-за этого значения должно быть 2: String sizeOfBoardString = "3\n2";
Если я запускаю программу вручную, она работает нормально
public class StartGame {

public void runGame(int boardSize, int boardSize2) {
RealUser realUser = new RealUser();
Computer computer = new Computer();
OutputComputer outputComputer = new OutputComputer();
Board board = new Board(boardSize, boardSize);
outputComputer.computerOrHuman();
int compOrHum = board.computerOrHuman();
board.showFilledBoard();
}

И есть вызов ComputerOrHuman()
public class Board {

private char[][] values;
private int rows;
private int columns;
List winnersX = new ArrayList();
List winnersO = new ArrayList();

public Board(int rows, int columns) {
this.rows = rows;
this.columns = columns;
this.values = new char[rows][columns];
}
public int computerOrHuman() {
InputSelector inputSelector = new InputSelector();
int ifHuman = inputSelector.computerOrHuman();
return ifHuman;
}
}

И селектор ввода, содержащий Scanner.nextLine()
public class InputSelector {
Scanner scanner = new Scanner(System.in);
public int computerOrHuman() {
int computerOrHuman = Integer.parseInt(scanner.nextLine());
return computerOrHuman;
}
}

Что мне нужно сделать, чтобы код работал?
Вот результат кода:
Добро пожаловать в TicTacToe!
Выберите тип игры. Введите 3 или 10
Вы хотите играть с компьютером(1) или человеком(2)?
Строка не найдена
public class OutputComputer {
public void computerOrHuman() {
System.out.println("Do you want to play with computer(1) or human(2)?");
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... d-i-change
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»