如何从Maven中运行scalatest的单个测试

23

我没有找到任何关于如何做这件事的文档。对于JUnit,相当于:

mvn -Dtest=org.apache.spark.streaming.InputStreamSuite test
3个回答

38

tl;dr mvn test -Dsuites="some.package.SpecsClass"


我在这里找到了答案并且它有效:(https://groups.google.com/forum/#!topic/scalatest-users/Rr0gy61dg-0)

运行测试用例中的 'a pending test' 在 HelloSuite, 以及所有测试用例在 HelloWordSpec:

 mvn test -Dsuites='org.example.
HelloSuite @a pending test, org.example.HelloWordSpec' 
  • 运行包含'hello'HelloSuite中的所有测试:

    mvn test -Dsuites='org.example.HelloSuite hello'

了解更多详情,请访问:http://scalatest.org/user_guide/using_the_scalatest_maven_plugin


我无法让它正常工作。Maven一直抱怨“一个未决测试”是一个未知的生命周期。 - ldeck
完全不起作用,Maven仍然发现所有的测试套件。 - Grigoriev Nick
@ideck,你可能写成了-Dsuites 'org.example...'而不是-Dsuites='org.example...' - bonnal-enzo

23

找到答案了:它是

-DwildcardSuites

以下是示例命令行:

mvn -pl streaming -DwildcardSuites=org.apache.spark.streaming.InputStreamSuite test

更新: 较新版本的 scalatest 使用

 -Dsuites

因此,语法将是:

mvn -pl streaming -Dsuites=org.apache.spark.streaming.InputStreamSuite test

18

请注意,如果您在同一个模块中有一些Java测试(像spark一样),则需要关闭它们-您可以通过告诉surefire运行不存在的测试来完成这个操作。

这是我刚刚运行的测试。

mvn test -Dtest=moo -DwildcardSuites=org.apache.spark.deploy.yarn.ClientSuite

跳过Java测试,只运行Scala测试。

Scalatest似乎不能像Maven Surefire那样让你在套件中运行单个测试。如果你有一个在大套件中失败的测试用例,这并不理想。

[更正 2016-08-22: 看起来您可以按名称请求特定套件; 参见下面的其他答案。很高兴错了]。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接