我正在使用ScalaTest运行一些测试,这些测试依赖于连接来测试服务器是否存在.我目前创建了自己的Spec,类似于:
abstract class ServerDependingSpec extends FlatSpec with Matchers {
def serverIsAvailable: Boolean = {
// Check if the server is available
}
}
Run Code Online (Sandbox Code Playgroud)
当此方法返回时,是否可以忽略(但不会失败)测试false?
目前我是以"hackish"方式做到的:
"Something" should "do something" in {
if(serverIsAvailable) {
// my test code
}
}
Run Code Online (Sandbox Code Playgroud)
但我想要类似的东西
whenServerAvailable "Something" should "do something" in {
// test code
}
Run Code Online (Sandbox Code Playgroud)
要么
"Something" should "do something" whenServerAvailable {
// test code
}
Run Code Online (Sandbox Code Playgroud)
我想我应该定义我的自定义标签,但我只能参考in或者的源代码,ignore我不明白我应该如何插入我的自定义实现.
我该怎么做到这一点?
Hol*_*ndl 23
你可以使用assume:
"Something" should "do something" in {
assume(serverIsAvailable)
// my test code
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用cancel:
"Something" should "do something" in {
if(!serverIsAvailable) {
cancel
}
// my test code
}
Run Code Online (Sandbox Code Playgroud)
And*_*ann 10
您可以使用标签来实现此目的:
有关如何使用标签的文档: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
}
Run Code Online (Sandbox Code Playgroud)
运行测试
运行测试有点棘手.它仅适用于testOnly和testQuick不测试.在示例testOnly是testOnly*的缩写
sbt "testOnly -- -l biz.neumann.ServerAvailable"
Run Code Online (Sandbox Code Playgroud)
小智 7
以下是根据条件跳过测试的一些技巧:
object WhenServerAvailable extends Tag(if (serverIsAvailable) "" else classOf[Ignore].getName)
"Something" should "do something" taggedAs WhenServerAvailable in { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6622 次 |
| 最近记录: |