Scala 单元测试标准输入/标准输出

2024-04-09

单元测试 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(使用前将#替换为@)

Scala 单元测试标准输入/标准输出 的相关文章

随机推荐