基本问题,我想将标准输入设置为特定字符串。目前我正在尝试这个:
import java.nio.charset.StandardCharsets
import java.io.ByteArrayInputStream
// Let's say we are inside a method now
val str = "textinputgoeshere"
System.setIn(new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8)))
因为这与我在Java中的方式类似,但是str.getBytes似乎在Scala中的工作方式不同,因为当我用println检查它时,System in被设置为内存地址....
我查看了Scala API:http://www.scala-lang.org/api/current/scala/Console $ .html#setIn(in:java.io.InputStream):Unit 我找到了
def withIn[T](in: InputStream)(thunk: ⇒ T): T
但这似乎只设置了特定代码块的输入流,我希望这是我的JUnit测试中的Setup方法中的一个功能。
答案 0 :(得分:1)
我的问题最终与我的代码有关,而不是这个特定的概念。将标准输入/系统输入覆盖到Scala中的字符串的正确方法如下:
val str = "your string here"
val in: InputStream = new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8))
Console.withIn(in)(yourMethod())"
我的测试现在正确运行。