Я сделал игру, в которой пользователь и ИИ по очереди поворачивают кости. Игра автоматически переходит на ход ИИ и возвращается к повороту пользователя. Я использовал JOptionPane.showMessageDialog, чтобы открыть диалоговое окно с уведомлением пользователя о том, что это их очередь. Итак, все это работает нормально, но когда я запускаю тестовый класс JUnit для проверки метода hold(), всплывающее окно появляется. Есть ли способ подавить всплывающее окно или автоматически закрыть окно в классе JUnit Test?JUnit тестирование метода с помощью JOptionPane.showMessageDialog
public void hold() {
this.swapWhoseTurn();
this.setChanged();
this.notifyObservers();
if (this.getCurrentPlayer().getIsMyTurn() == this.getComputerPlayer().getIsMyTurn()) {
this.theComputer.takeTurn();
this.hold();
HumanPlayerPanel.turnAlert();
}
TurnAlert является статическим методом в другом классе под названием HumanPlayerPanel. Вот код.
public static void turnAlert() {
JOptionPane.showMessageDialog(null, "It is your turn");
}
Я видел, что я могу вызвать метод doClick на кнопку OK_Option, но я не слишком уверен, как найти эту кнопку. Любая помощь приветствуется.
У меня нет большого опыта работы с JUnit, но из понимания это не очень хорошо подходит для тестирования пользовательского интерфейса. Вам нужно использовать фреймворк, который может взаимодействовать с пользовательским интерфейсом в пределах его потока (Event Dispatching Thread) и который может взаимодействовать с различными компонентами (например, с кнопкой). – MadProgrammer
Я нашел это [ссылка] http://stackoverflow.com/questions/15597425/how-do-simulate-a-button-click-in-a-swing-pop-up-dialog, но я не понимаю, как переопределить метод, вызывающий окно JOptionPane.showMessageDialog в тестовом классе JUnit – mediumM