写完一个插件之后,我们就需要对他进行测试
如果我们用人工测试的话,将会非常麻烦,因为maven插件本身的发布流程就非常复杂
你需要编译打包你的maven插件,然后安装到本地库(或远程私库中),然后写一个sample project,再运行,看一下是否正确
当然你也可以用单元测试来解决一些问题,但是单元测试比较难保证插件最终正确,而且maven插件很经常是跟文件打交道
这里我们就需要对maven插件进行自动化的集成测试
maven的生命周期是包含集成测试的,默认是没有绑定任何功能。不过如果你google一下,会找到一些maven进行集成测试的例子,大致就是启动jetty,然后通过http访问验证,再关闭jetty
我们这里使用的是maven-invoker-plugin,它就是用于maven插件的集成测试
先在pom.xml中加入
<build> <plugins> <plugin> <artifactId>maven-invoker-plugin</artifactId> <configuration> <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> </configuration> <executions> <execution> <id>integration-test</id> <goals> <goal>install</goal> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
cloneProjectsTo是先将测试案例拷贝出来再运行
execution段的设定是把maven-invoker-plugin的两个goal绑定到integration-test上
integration-test这个生命周期会在mvn install之前调用
集成测试的内容放在 src/it 目录下,每新建一个目录代表一个独立的测试,里面放一个完整的maven项目,当然你在这个项目里面需要引入自己编写的maven插件并且运行
另外还需要一个postbuild.groovy文件,放在测试案例的根目录,这个脚本的用处是检查运行后的maven项目是否达到自己要的效果。很明显,看名字就知道用groovy来写,一般我们会检查一下,是否产生了某某文件等等来判定,如果不正确的话抛出异常
然后我们在maven插件目录运行mvn integration-test就能进行集成测试了
- 如何编写maven plugin(一) 基础
- 如何编写maven plugin(二) 注入
- 如何编写maven plugin(三) 测试