maven-surefire-plugin插件,你真的会用吗?-------续篇之深入挖掘高级用法

达芬奇密码2018-07-06 18:19

之前分享过一篇关于maven-surefile-plugin插件的用法。主要介绍了加参数的方式来灵活的调用不同的xml包含的方法集合。回顾原文请点击链接查看:

maven-surefire-plugin插件,你真的会用吗?

有了这个用法我就可以很方便的在linux环境下运行我想运行的测试集合了,对于持续集成中自动运行不同的测试集合非常有用。于是我很happy的复制黏贴修改了n多个xml。例如这样:


src/test/resources/xml/all.xml                src/test/resources/xml/envclear.xml        src/test/resources/xml/GetTest.xml               src/test/resources/xml/OnlinePutReadDelete.xml
src/test/resources/xml/DataRecoveryFun.xml    src/test/resources/xml/FaultTest.xml       src/test/resources/xml/manual.xml                src/test/resources/xml/smoke.xml
src/test/resources/xml/DataRecoveryInter.xml  src/test/resources/xml/GCGetFileCheck.xml  src/test/resources/xml/MDSAdmin.xml              src/test/resources/xml/Stress_PutBaseFile.xml
src/test/resources/xml/DataRecoveryonea.xml   src/test/resources/xml/GCMultiPut.xml      src/test/resources/xml/multidebug.xml            src/test/resources/xml/Stress_PutReadDelMix.xml
src/test/resources/xml/debug.xml              src/test/resources/xml/GCPutAndDel.xml     src/test/resources/xml/multidiffmethoddebug.xml  src/test/resources/xml/stress.xml

看到这么多各种命名的xml文件是不是很崩溃,其实梳理了一下除了四五个持续集成要常用的以外 其他很多都是临时为了跑一个回归集合或者调试部分用例创建的xml。时间久了有些xml可能都不一定能想起来对应的是那些用例集合,还需要打开查看xml内的属性。 这样维护成本很高。 所以思考了一下,为了节省xml的维护成本,对于需要调试单个method的尽量不采用mvn clean test -DsuiteXmlFile=src/test/resources/xml/a.xml的方式。 之前稍微瞄到过可以直接用参数来指定想运行的class类,例如这样:mvn clean test -Dtest=GetExsitFileTest test就是代表将GetExsitFileTest 这个class中的所有method都运行。 实验如下:

mvn clean test -Dtest=GetExsitFileTest test
.......
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0

那么问题来了,这个集合中不是所有method我都想运行。我只想运行其中1个或者几个如何处理呢,前提是不想新建一个xml来维护这个临时的测试集合。 经过查找官网说明,找到这两句好用的指令: 运行class中的1个method:

mvn clean test -Dtest=GetExsitFileTest#GetExsitFileTest_Normal test

这句就是表示运行GetExsitFileTest 这个class中的GetExsitFileTest_Normal这个方法。 运行结果:

mvn clean test -Dtest=GetExsitFileTest#GetExsitFileTest_Normal test
.......
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

运行class中的2个method

mvn clean test -Dtest=GetExsitFileTest#GetExsitFileTest_Normal+DeleteTodayExsitFileTest test
.......
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

如上述所示,对于单个class中的几个method的集合就可以用这种方式去运行了。

本文来自网易实践者社区,经作者崔晓晴授权发布。