k0p*_*kus 2 unit-testing scala sbt scalatest
作为一个scala初学者,我想标记集成测试,以便在某些情况下排除它们的运行(因为它们可能非常慢并且可能因外部更改/问题而中断).
我这样创建了标签integration:
import org.scalatest.{FlatSpec, Matchers, Tag}
object integration extends Tag("com.dreamlines.tags.integration")
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我标记了一个测试:
class SchemaValidation extends FlatSpec with Matchers {
it should "return valid json" taggedAs (integration) in {
...
assertSchema(response, endpointSchema)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在阅读如何基于文档中的标记过滤某些测试时,我感到非常困惑,因为突然我读到我应该使用 org.scalatest.tools.Runner
scala [-cp scalatest-<version>.jar:...] org.scalatest.tools.Runner [arguments]
Run Code Online (Sandbox Code Playgroud)
哪个有我正在寻找的旗帜:
-l指定要排除的标记(注意:每个-l只允许一个标记名称)-l SlowTests -l PerfTests
然而,我只习惯通过以下方式运行我的测试:
sbt test
Run Code Online (Sandbox Code Playgroud)
我不知道这里的scala测试运行器指的是什么,或者当我运行时引擎盖下发生了什么sbt test.我真的迷路了.
我期待执行测试并不完全不同于:
sbt test --ignore-tag integration
Run Code Online (Sandbox Code Playgroud)
testOnly -- -l integration
Run Code Online (Sandbox Code Playgroud)
或者,如果ScalaTest使用完全限定的标记ID:
testOnly -- -l com.dreamlines.tags.integration
Run Code Online (Sandbox Code Playgroud)
如果您想在默认情况下执行此操作,则可以testOptions在build.sbt文件中进行调整.
编辑:
您可能会考虑采用不同的集成测试方法.您可能希望将它们放在src/it/{scala|resources}文件夹中,而不是标记它们.
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |