Я пытаюсь написать тест, который перенаправляет stdout
основного метода, но кажется, что как только я вызываю main, он, кажется, начинается с другого потока, и я не могу захватить вывод. Вот код:Redirect stdout в другом потоке
Это работает:
val baos = new ByteArrayOutputStream
val ps = new PrintStream(baos)
System.setOut(ps)
print("123")
Assert.assertEquals("123", baos.toString)
Это не:
val baos = new ByteArrayOutputStream
val ps = new PrintStream(baos)
System.setOut(ps)
GameRunner.main(_)
Assert.assertEquals("123", baos.toString)
....
object GameRunner {
def main(args: Array[String]) {
print("123")
Как я могу поймать вызов print
в мой тест?
* Я также попытался scala.Console.setOut
EDIT
Я заметил, что работает GameRunner.main(_)
даже не перечислить что-либо в консоли, когда я не перенаправляет. Чем это вызвано?
Как я редактировал, 'Console.setOut' не работает, однако,' Console.withOut' работал –
справа, на втором счете, тоже только я вызов с основным (null) вместо main (_), тогда он работает. Я думал, что это сработает, потому что я не использую аргументы ... Мне нужно будет понять это дальше :) Большое спасибо! –