gpt4 book ai didi

scala - 如何从 ScalaTest 获取指示测试套件失败的返回值?

转载 作者:行者123 更新时间:2023-12-04 15:06:58 25 4
gpt4 key购买 nike

我正在以编程方式运行 ScalaTest ( FlatSpec ) 套件,如下所示:

new MyAwesomeSpec().execute()

有什么方法可以确定所有测试是否通过? Suite#execute()返回 Unit在这里,所以没有帮助。理想情况下,我想运行整个套件,然后获得一个返回值,指示是否有任何测试失败;另一种方法是在任何失败的测试中立即失败/返回。

我可能可以通过编写一个新的 FlatSpec 来实现这一点。覆盖 Scalatest Suite#execute() 的子类方法来返回一个值,但是有没有更好的方法来做我想做的事情?

最佳答案

org.scalatest.Suite还有run函数,它返回单个执行测试的状态。

通过一些调整,我们可以访问每个测试的执行结果。要运行测试,我们需要提供 Reporter实例。在我们的简单案例中,一个临时的空报告器就足够了:

val reporter = new Reporter() {
override def apply(e: Event) = {}
}

所以,让我们执行它们:
import org.scalatest.events.Event
import org.scalatest.{Args, Reporter}

val testSuite = new MyAwesomeSpec()
val testNames = testSuite.testNames

testNames.foreach(test => {
val result = testSuite.run(Some(test), Args(reporter))
val status = if (result.succeeds()) "OK" else "FAILURE!"
println(s"Test: '$test'\n\tStatus=$status")
})

这将产生类似于以下的输出:
Test: 'This test should pass'
Status=OK
Test: 'Another test should fail'
Status=FAILURE!

可以访问每个测试用例名称及其各自的执行结果,您应该有足够的数据来实现您的目标。

关于scala - 如何从 ScalaTest 获取指示测试套件失败的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49201878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com