如何用maven运行特定的test case

最近碰到了一些特殊的问题,有些test case在IDE里面运行是可以pass的,但通过Maven运行就一定会出问题。这里不深入讨论,这类测试一般都是和entity manager有关的。今天记录一下在这过程中,maven的一些测试特性:如何用Maven运行特定的test case。

运行一个单独的test

在开发过程中,你有可能需要重复的单独运行一个test class。要用mavan做到这个,需要把test属性设为你想要的test class的名字。(不需要后缀名,如果不小心添加了,也会被mvn去掉)

mvn -Dtest=TestCircle test

如果你pom.xml里面的surefile plugin配置了多个测试层级,有可能你只想执行默认的测试层级:

mvn surefire:test -Dtest=TestCircle

你还可以用表达式来运行一组测试:

mvn -Dtest=TestCi*le test

或者用多个名字/模式,只需要用逗号把他们分开:

mvn -Dtest=TestSquare,TestCi*le test

运行单个test class中的一组测试

在maven-surefire-plugin的2.7.3之后, 你可以运行单个test class中的特定test,语法如下:

(NOTE : 这个功能只能支持Junit 4.x和TestNG)

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 Plugin 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
  • 其中感叹号 (!) 表示不运行tests.
  • 在正则表达式之外的问号 (?) 表示任意一个字符。
  • 在使用正则表达式的时候,文件后缀不是必须的。
  • 可用/作为路径访问。

pom.xml定义测试

在Surefire Plugin 2.19之后,还可以把要运行的case写到pom.xml中:

<test>my.package.???Test#testMethod, another.package.*test>
  • 列表内容

你可能感兴趣的:(Java)