gpt4 book ai didi

scala - 如何使用ScalaTest以编程方式忽略/跳过测试?

转载 作者:行者123 更新时间:2023-12-03 21:06:24 27 4
gpt4 key购买 nike

我正在使用ScalaTest运行一些测试,这些测试依赖于要存在的测试服务器的连接。我目前创建了与此类似的自己的Spec:

abstract class ServerDependingSpec extends FlatSpec with Matchers {

def serverIsAvailable: Boolean = {
// Check if the server is available
}
}


当此方法返回 false时,是否可以忽略(但不会失败)测试?

目前,我以一种“ hackish”的方式进行操作:

"Something" should "do something" in {
if(serverIsAvailable) {
// my test code
}
}


但我想要类似的东西

whenServerAvailable "Something" should "do something" in { 
// test code
}


要么

"Something" should "do something" whenServerAvailable { 
// test code
}


我想应该定义我的自定义标签,但是我只能引用 inignore的源代码,而且我不知道如何插入自定义实现。

我应该如何完成?

最佳答案

您可以使用标签来实现:

有关如何使用标签的文档:http://www.scalatest.org/user_guide/tagging_your_tests

使用命令行参数添加和删除标记的测试:http://www.scalatest.org/user_guide/using_the_runner#specifyingTagsToIncludeAndExclude

示例代码:

import org.scalatest.Tag

object ServerIsAvailable extends Tag("biz.neumann.ServerIsAvailable")

"Something" should "do something" taggedAs(ServerIsAvailable) in {
// your test here
}


运行测试

运行测试有些棘手。它仅适用于testOnly和testQuick而不适用。
在示例中,testOnly表示testOnly *

 sbt "testOnly -- -l biz.neumann.ServerAvailable"

关于scala - 如何使用ScalaTest以编程方式忽略/跳过测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460295/

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