运行单个测试
在开发过程中,您可能会重复运行一个测试类。要通过 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>
字符 (?) 替换单个字符, (*) 表示零个或多个字符。可以额外组合多种格式。