sbt中的ScalaTest:有没有一种方法可以在没有标签的情况下运行单个testing?

我知道,一个单一的testing可以运行,在SBT,

test-only *class -- -n Tag 

有没有告诉sbt / scalatest运行一个单一的testing没有标签的方法? 例如:

 test-only *class -- -X 2 

这意味着“在class上进行第二次考试,不pipe是什么”。 我们有一堆testing,没有人打扰他们,所以有没有一种方法来运行一个单一的testing,而没有一个标签?

现在支持(自ScalaTest 2.1.3以来):

 testOnly *MySuite -- -z foo 

仅运行名称包含子string“foo”的testing。

对于精确匹配而不是子string,请使用-t而不是-z

我没有看到在testing类中运行单个未标记的testing的方法,但是我提供了我的工作stream程,因为对于遇到这个问题的任何人来说似乎都是有用的。

从一个会议内:

 test:test-only *YourTestClass 

(星号是通配符,可以指定完整pathcom.example.specs.YourTestClass 。)

该testing类中的所有testing将被执行。 大概你最关心失败的testing,所以纠正任何失败的实现,然后运行:

 test:test-quick 

…只会执行失败的testing。 (在这种情况下,重复最近执行的test:test-only命令将与test:test-quick相同,但是如果将testing方法分解为相应的testing类,则可以使用通配符进行test:test-quick一个更有效的方式来重新运行失败的testing。)

请注意,在ScalaTest中testing的命名是一个testing类,而不是一个特定的testing方法,所以所有未标记的方法都被执行。

如果在testing类中有太多的testing方法,可以将它们分成不同的类或适当的标记。 (这可能是被testing类违反单一责任原则并可能使用重构的信号。)

我想添加一个具体的例子来陪同其他答案

您需要指定要testing的类的名称,因此如果您有以下项目(这是一个Play项目):

播放项目

您可以通过从SBT控制台运行以下命令来testingLogintesting:

 test:testOnly *LoginServiceSpec 

如果您从SBT控制台外部运行命令,则需要执行以下操作:

 sbt "test:testOnly *LoginServiceSpec"