在 GitHub 上叉我

运行单个测试

在开发过程中,您可能会重复运行一个测试类。要通过 Maven 运行它,请将test属性设置为特定的测试用例。

mvn -Dtest=TestCircle test

如果您在 POM 中的surefire 插件中配置了多个执行,您可能希望执行唯一的默认测试阶段:

mvn surefire:test -Dtest=TestCircle

test参数的值是测试类的名称(不带扩展名;如果您不小心提供了扩展名,我们将删除该扩展名)。

您还可以使用模式来运行许多测试:

mvn -Dtest=TestCi*le test

您可以使用多个名称/模式,以逗号分隔:

mvn -Dtest=TestSquare,TestCi*le test

注意:对“test”参数使用语法,例如“foo/MyTest.java”、“**/MyTest.java”、“MyTest”(参见包含/排除)。

在单个测试类中运行一组方法

从 Surefire 2.7.3 开始,您还可以只运行测试类中的一部分测试。

注意:此功能仅支持 Junit 4.x 和 TestNG。对“test”参数使用语法,例如“foo/MyTest.java”、“**/MyTest.java”、“MyTest”(参见包含/排除)。

您应该使用以下语法:

mvn -Dtest=TestCircle#mytest test

你也可以使用模式

mvn -Dtest=TestCircle#test* test

从 Surefire Plugin 2.19 开始,您可以选择多种方法(JUnit 4、JUnit 4.7+ 和 TestNG):

mvn -Dtest=TestCircle#testOne+testTwo test

请注意,此功能仅在 Surefire 插件 2.12.1 之后才在 JUnit 4 提供程序中可用。

多种格式合二为一

从 Surefire 插件 2.19 开始,一种模式支持多种格式(JUnit 4、JUnit 4.7+、TestNG):

mvn "-Dtest=???Test, !Unstable*, pkg/**/Ci*leTest.java, *Test#test*One+testTwo?????, #fast*+slowTest" test
mvn "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" test

感叹号 (!) 不包括测试。非正则表达式模式中的字符 (?) 替换文件名或路径中的一个字符。在非正则表达式模式中,文件扩展名不是强制性的,可以使用带有斜杠的包。正则表达式验证完全限定的类文件,并在 (#) 之后分别验证测试方法,但类是可选的。正则表达式仅支持“.class”文件扩展名。请注意,不支持以 (#) 字符标记的正则表达式注释。参数化 JUnit 运行器使用括号中的索引来描述测试方法,因此非正则表达式方法模式将变为#testMethod[*]. 如果使用 JUnit 注释@Parameters(name="{index}: fib({0})={1}")并在模式中选择索引,例如 5,则非正则表达式方法模式将变为#testMethod[5:*].

完全限定的类名

从 Surefire 插件 2.19.1 开始,可以使用具有完全限定类名或包的语法,例如:

<test>my.package.???Test#testMethod, another.package.*</test>

字符 (?) 替换单个字符, (*) 表示零个或多个字符。可以额外组合多种格式。