用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:
-
mvn test -Dtest = DesignRulesTest
结果:
[错误]无法执行目标org.apache.maven.plugins:maven-surefire-plugin: 2.12 :testing(默认testing)项目pmd: 没有testing被执行! -
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插件没有提供任何方式来做到这一点。 但随时打开一个问题 🙂