我知道您可以使用以下方法在某个类中运行所有测试:

mvn test -Dtest=classname

但我想运行一个单独的方法和-Dtest=classname。Methodname似乎不起作用。


当前回答

要在Maven中运行单个测试方法,您需要提供如下命令:

mvn test -Dtest=TestCircle#xyz test

TestCircle是测试类名,xyz是测试方法。

通配符也可以;包括方法名和类名。

如果在多模块项目中进行测试,则使用-pl <module-name>指定测试所在的模块。

对于集成测试,请使用it.test=…选项代替test=…

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

其他回答

surefire 2.12有一个问题。 这是我把maven-surefire-plugin从2.12修改到2.11的结果:

mvn test -Dtest=DesignRulesTest 结果: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project pmd: No tests were executed! mvn test -Dtest=DesignRulesTest 结果: [INFO]——maven-surefire-plugin:2.11:test (default-test) @ pmd—— ... 运行net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest 测试运行:5,失败:0,错误:0,跳过:4,时间流逝:4.009秒

这个命令有效!! 请注意,“-DTest”以大写字母“T”开头。

要在Maven中运行单个测试方法,您需要提供如下命令:

mvn test -Dtest=TestCircle#xyz test

TestCircle是测试类名,xyz是测试方法。

通配符也可以;包括方法名和类名。

如果在多模块项目中进行测试,则使用-pl <module-name>指定测试所在的模块。

对于集成测试,请使用it.test=…选项代替test=…

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

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

Specify this parameter to run individual tests by file name, overriding the includes/excludes parameters. Each pattern you specify here will be used to create an include pattern formatted like **/${test}.java, so you can just type "-Dtest=MyTest" to run a single test called "foo/MyTest.java". This parameter overrides the includes/excludes parameters, and the TestNG suiteXmlFiles parameter. since 2.7.3 You can execute a limited number of method in the test with adding #myMethod or #my*ethod. Si type "-Dtest=MyTest#myMethod" supported for junit 4.x and testNg

首先,你需要清理你的专业项目

mvn戒毒

然后您可以使用运行特定的文件和函数

mvn test -Dtest=testClassName#testCaseName