scalatest - ScalaTest / SBT "testOnly com.acme.someText -- -n Slow" 忽略所有测试
问题描述
我正在尝试使用 ScalaTest 的标记功能来限制在测试套件中运行的测试范围。不幸的是,它根本不起作用。我尝试过的任何语法都只会导致根本没有运行测试。
import org.scalatest.tagobjects._
"Ship service" should {
"return to port" taggedAs(Slow) in {
whenReady(client.getShip(shipId).invoke()) { ship =>
whenReady(client.dock(ship.id).invoke()) { response =>
response should be(Done)
}
}
}
}
我也尝试过使用"return to port" taggedAs(org.scalatest.tagobjects.Slow)
,但没有任何区别。
当我尝试仅Slow
在 SBT 中运行测试时,没有运行测试:
sbt:ship-service> testOnly "com.acme.ship.ShipSpec -- -n org.scalatest.tagobjects.Slow"
[info] ScalaTest
[info] Run completed in 13 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
我也试过:
sbt:ship-service> testOnly "com.acme.ship.ShipSpec -- -n Slow"
sbt:ship-service> testOnly com.acme.ship.ShipSpec -- -n Slow
第一个没有区别。在第二个(不带引号)上,每个测试都会运行,无论应用的标签如何(因此所有测试,包括未标记和标记)。
解决方案
假设您正在使用org.scalatest.tagobjects.Slow
而不是实现它,object Slow extends Tag("org.scalatest.tags.Slow")
因此您需要执行testOnly com.acme.ship.ShipSpec -- -n org.scalatest.tags.Slow
或定义自己的标签 fe:case object Slow extends Tag("Slow")
推荐阅读
- javascript - 如何将html表格的大量数据导出为Excel文件
- c++ - 如何使用opencv GpuMat在cuda上执行元素矩阵乘法?
- angular - 如何动态更新路由器子节点的路径?
- swift - 我应该如何解决这个错误:线程 1: EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=650 MB, used=0x0)?
- php - PHPUnit 测试:null 与预期类型“数组”不匹配
- java - 如何阻止 JComponent.setLocation() 导致重绘?
- android - 执行 com.android.build.gradle.internal.tasks 时发生故障
- javascript - 如何使用 socket.io 重新加载表数据
- vue.js - Vuex | 地图状态 - 页面刷新时 beforeMount() 中的范围问题
- java - 如何在 Maven 中引用不在 mvnrepo 上但在 Eclipse Orbit 上托管的 jar?