Тест Junit ожидается и актуален
У меня проблема с этим, и я не знаю, как это исправить.
Это мой класс:
import java.util.Scanner;
public class ScannerAndKeyboard
{
public static void main(String[] args)
{ Scanner s = new Scanner(System.in);
System.out.print( "Enter your name: " );
String name = s.nextLine();
System.out.println( "Hello " + name + "!" );
}
}
и это мой тест JUnit
public class ScannerAndKeyboardTest {
@Rule
public final TextFromStandardInputStream systemInMock = emptyStandardInputStream();
@Rule
public final SystemOutRule OutLog = new SystemOutRule().enableLog();
@Test
public void Name() {
String name = "Name";
String expectedConsoleOutput = "Enter your name: Hello Name!" + System.lineSeparator();
systemInMock.provideLines(name);
ScannerAndKeyboardTest.main(new String[] {});
Assert.assertEquals(expectedConsoleOutput,OutLog.getLog());
}
private static void main(String[] strings) {
}
}
вот строка № 31
Assert.assertEquals(expectedConsoleOutput,OutLog.getLog());
Может кто-нибудь сказать мне, что я делаю не так и почему этот журнал пуст? Я делаю свои первые шаги в этом
1 ответ
Проблема в том, что вы звоните неправильно main
метод. замещать
ScannerAndKeyboardTest.main(new String[] {});
с
ScannerAndKeyboard.main(new String[] {});
Вы также должны удалить метод ScannerAndKeyboardTest#main
потому что это не нужно и только вызывает путаницу.
Если вы измените подпись main
метод для
public static void main(String... args)
тогда вам не нужно создавать пустой массив в вашем тесте и можете просто вызвать
ScannerAndKeyboard.main();