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

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

其他回答

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

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

但是JUnit的发布过程不是基于maven的,因此maven用户必须手动将其放入他们的存储库中。

您可以使用以下语法运行特定的测试类和方法:

完整包:mvn test -Dtest="com.oracle.tests.**" mvn test -Dtest=CLASS_NAME1 mvn test -Dtest=CLASS_NAME1#METHOD_NAME1 来自多个类的多个方法:mvn test -Dtest=CLASS_NAME1#METHOD_NAME1,CLASS_NAME2#METHOD_NAME2

从一个测试类运行一个测试方法。

mvn test -Dtest=Test1#方法名


其他相关的用例

mvn test //运行所有单元测试类 mvn test -Dtest=Test1 //运行单个测试类 mvn test -Dtest=Test1,Test2 //运行多个测试类 mvn test -Dtest=Test1#testFoo* //运行测试类中匹配模式'testFoo*'的所有测试方法。 mvn test -Dtest=Test1#testFoo*+testBar* //运行一个测试类中匹配'testFoo*'和'testBar*'模式的所有测试方法。

我尝试了这个线程中提供的几个解决方案,但它们不适用于依赖于不同的模块。在这种情况下,我必须使用额外的参数从根模块运行mvn: -am(——same -make),它告诉maven构建您的测试模块所依赖的模块,并且-DfailIfNoTests=false,否则会出现“没有测试被执行!”错误。

mvn test -pl B -Dtest=MyTestClass#myTest -am -DfailIfNoTests=false

root目录下的Pom.xml部分:

<modules>
    <module>A</module>
    <module>B</module>
<modules>

B取决于A。