在sbt自定义测试任务中仅运行标记测试

时间:2017-01-30 18:19:37

标签: scala testing sbt scalatest tagging

我有一个包含端到端测试的sbt子项目。这些作为e2e:test运行。我已将配置定义为 我在同一个子项目中定义了一个标签。 object HealthCheckTest extends Tag("HealthCheckTest")

我使用HealthCheckTest标记了我的一些端到端测试,如下所示:

it("should be able to verify the data", HealthCheckTest)

我想从命令行只运行运行状况检查测试。我试图通过以下方式做到这一点:

sbt'project e2e'e2e:testOnly - -n HealthCheckTest

但这导致所有e2e测试都在运行。我已尝试提供标记的完整路径(com.s.p.e2etests.HealthCheckTest),但这也不起作用。

偶尔我会收到关于 - 和 - 被弃用的警告;但是,所有在线文档都说使用这种语法,包括scalatest docs。

如何才能运行我标记的e2e测试?

我还尝试为健康检查测试创建一个单独的任务,但只能根据测试类名称而不是标记来确定如何过滤。

1 个答案:

答案 0 :(得分:2)

您发布的命令行缺少引号。试试这样:

sbt 'project e2e' 'testOnly -- -n HealthCheckTest'

sbt可执行文件将每个参数视为在sbt控制台中运行的整行,因此您必须在每个完整行周围放置引号。

请注意,虽然这不会运行测试用例,但仍然实例化测试类并打印出测试用例名称。