Я очень новичок в JUnit и Unit Testing и задаюсь вопросом насчет насмешливого ввода пользователем объекта Scanner. У меня есть следующий код, который я бы хотел проверить. Очень простой.Использование Junit для подбора пользовательского ввода для объекта Scanner
Run Код
import java.util.Scanner;
public class MyGame{
public MyGame() {
Scanner response = new Scanner(System.in);
int game;
System.out.println("Enter a game.");
System.out.println("Press 1 for Super Awesome Bros.");
System.out.println("Press 2 for a Random game.");
game = response.nextInt();
if (game == 1){
System.out.println("Super Awesome Bros.");
}
}
}
Вот мой TestCase
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
import org.junit.contrib.java.lang.system.TextFromStandardInputStream;
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.contrib.java.lang.system.TextFromStandardInputStream.*;
@RunWith(JUnit4.class)
public class Testsuite {
@Rule
public final StandardOutputStreamLog out = new StandardOutputStreamLog();
@Rule
public final TextFromStandardInputStream in = emptyStandardInputStream();
@Test
public void printOutput() {
in.provideText("1\n");
new MyGame();
assertThat(out.getLog(), containsString("Super Awesome Bros."));
}
}
Так что в моем TestCase, я пытаюсь издеваться вход, чтобы быть 1, так что я могу получить ожидаемый результат. Но по какой-то причине мой код проходит независимо от результата. Я не уверен, что я делаю неправильно. Тест должен завершиться неудачно, если результат не соответствует ожидаемому. Может ли кто-то определить проблему? Опять же, я просто пытаюсь понять JUnit и Unit Testing. В основном я использую тестирование на Python. Спасибо всем, кто продвинулся вперед.
Установите [IntelliJ IDEA] (https://www.jetbrains.com/idea/), щелкните правой кнопкой мыши имя теста и выберите «Отладка», после чего вы сможете отслеживать выполнение и легко узнать, почему он терпит неудачу/преуспевает. Также читайте об отладке, если вы не знаете, как это сделать: https://www.jetbrains.com/help/idea/2016.1/debugging.html – user3707125
Вы имеете в виду, что тест по-прежнему зеленый, если вы меняете первую строку теста to 'in.provideText (" 2 \ n ");'? –
Как вы проводите тест? –