簡體   English   中英

如何從ScalaTest獲取指示測試套件故障的返回值?

[英]How can I get a return value from ScalaTest indicating test suite failure?

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

new MyAwesomeSpec().execute()

有什么方法我可以弄清楚是否所有測試都通過了? Suite#execute()在這里返回Unit ,所以沒有幫助。 理想情況下,我想運行整個套件,然后獲得一個返回值,指示是否有任何測試失敗; 另一種方法是在任何失敗的測試中立即失敗/返回。

我可以通過編寫一個新的FlatSpec子類來覆蓋Scalatest Suite#execute() #cute 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!

有權訪問每個測試用例名稱及其各自的執行結果,您應該有足夠的數據來實現您的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM