用maven运行一个testing方法

我知道你可以运行所有的testing在一个特定的类使用:

mvn test -Dtest=classname 

但是我想运行一个单独的方法,-Dtest = classname.methodname似乎不工作。

要在Maven中运行单个testing方法,您需要提供以下命令:

 mvn -Dtest=TestCircle#xyz test 

TestCircle是testing类名称, xyz是testing方法。

通配符也可以工作; 无论是在方法名称和类名称。

如果要在多模块项目中进行testing,请使用-pl <module-name>指定testing所在的-pl <module-name>

对于集成testing,使用it.test=...选项而不是test=...

 mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test 

有一个确定的问题2.12。 这是发生在我改变maven-surefire插件从2.12到2.11:

  1. mvn test -Dtest = DesignRulesTest

    结果:
    [错误]无法执行目标org.apache.maven.plugins:maven-surefire-plugin: 2.12 :testing(默认testing)项目pmd: 没有testing被执行!

  2. mvn test -Dtest = DesignRulesTest

    结果:[INFO] — maven-surefire-plugin: 2.11 :testing(默认testing)@ pmd — …运行net.sourceforge.pmd.lang.java.rule.design.DesignRulesTesttesting运行:5 ,失败:0,错误:0,跳过:4,经过的时间:4.009秒

我用TestNG做什么,(对不起,JUnit不支持这个)testing用例是我可以分配一个组到我想运行的testing

 @Test(groups="broken") 

然后只需运行“mvn -Dgroups = broken”。

在单个testing类中运行一组方法使用2.7.3版,您可以在单个testing类中只运行n个testing。

注意:它支持junit 4.x和TestNG。

您必须使用以下语法

 mvn -Dtest=TestCircle#mytest test 

你也可以使用模式

 mvn -Dtest=TestCircle#test* test 

从2.12.1开始,你可以select多种方法(只有在这个时候JUnit4X,欢迎补丁)

 mvn -Dtest=TestCircle#testOne+testTwo test 

检查这个链接关于单个testing

新版本的JUnit包含Categories runner: http : //kentbeck.github.com/junit/doc/ReleaseNotes4.8.html

但是释放JUnit的过程不是基于maven的,所以maven用户必须手动将它放到他们的仓库中。

tobrien提到的testing参数允许您在方法名称之前使用指定方法。 这应该适用于JUnit和TestNG。 我从来没有尝试过,只要在Surefire插件页面阅读 :

指定此参数以按文件名运行单个testing,覆盖includes / excludes参数。 您在这里指定的每个模式将被用来创build一个像** / $ {test} .java格式化的包含模式,因此您只需键入“-Dtest = MyTest”即可运行一个名为“foo / MyTest.java”的testing。 此参数将覆盖includes / excludes参数和TestNG suiteXmlFiles参数。 自2.7.3以来您可以在testing中执行有限数量的方法,并添加#myMethod或#my * ethod。 Sitypes“-Dtest = MyTest#myMethod”支持junit 4.x和testNg

这个命令起作用! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test请注意“-DTest”以大写“T”开头。

您可以运行单个testing类,但不能在testing类中使用单个方法。 您使用类的简单名称而不是该类的完全限定名称。 所以,如果你在“org.sonatype.test.MyTest”中有一个testing,那就是你想运行的唯一一个testing,你的命令行应该是这样的:

 mvn test -Dtest=MyTest 

据我所知, surefire插件没有提供任何方式来做到这一点。 但随时打开一个问题 🙂