单元测试 stdIn/stdOut 是常见做法吗?如果是这样,那么你将如何测试这样的东西:
import scala.io.StdIn._
object Test {
def main(args: Array[String]) = {
println("Please input your text. Leaving an empty line will indicate end of the input.")
val input = Iterator.continually(readLine()).takeWhile(_ != "").mkString("\n")
val result = doSomethingWithInput(input)
println("Result:")
println(result)
}
}
如果这有什么区别的话,我通常使用 ScalaTest。
由于 Scala 使用标准 Java 流(System.out
, System.in
)在幕后,您可以通过将标准流替换为您可以进一步检查的自定义流来测试它。See here https://stackoverflow.com/questions/2169330/java-junit-capture-the-standard-input-output-for-use-in-a-unit-test更多细节。
事实上,虽然我主要关注的是确保doSomethingWithInput
已经过全面测试,并且可能会后续测试输入读数(以确保停止条件和输入字符串构造按预期工作)。
如果您已经测试了您要测试的值println
然后确保它已发送到控制台流,但付出的努力却收效甚微。此外,这样的测试用例将是继续下去的痛苦。一如既往,这取决于您的用例,但在大多数情况下,我只是避免测试它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)