[英]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.