Maven实现Web应用集成测试自动化 -- 部署自动化(WebTest Maven Plugin)

上篇:Maven实现Web应用集成测试自动化 -- 测试自动化(WebTest Maven Plugin)

之前介绍了如何在maven中使用webtest插件实现web的集成测试,这里有个遗留问题,就是在执行maven的intergation测试时候web应用已经部署在容器中处于in service的状态,那么web应用的部署是否可以自动化呢?在我们公司的系统中,由于使用了weblogic的cluster,自己写了脚步来实现部署,花费了不少人力物力,其实java web应用早就有福音了,是一款自动安装容器和部署应用的插件神器:cargo-maven2-plugin,这插件可以兼容所有目前主流的服务器如jboss、tomcat、glassfish、jetty等。

它的配置很简单,在build里面加入cargo-maven2-plugin,为了实现集成测试自动化,声明集成测试阶段之前调用cargo:start启动容器和部署应用,集成测试结束后调用cargo:stop关闭容器。默认start启动的容器在maven生存周期结束之后就会结束,有时候为了调试方便,可以调用cargo:run来启动容器和部署应用,在需要的时候再通过Ctrl+C结束容器运行。

为了实现容器启动和部署自动化,还需要提供一些配置参数给插件,下面给出个示例,Cargo还有很多其它的功能,具体可以参考:Cargo自动部署官方网站

                                             
                       org.codehaus.cargo
                       cargo-maven2-plugin
                        ${project.cargoPluginVersion}
                                
                            
                            
                                
                                ${project.cargo.container} 
                                 
                                 
                                    ${project.cargo.container.url} 
                                    ${project.build.directory}/${project.cargo.container}/downloads 
                                    ${project.build.directory}/${project.cargo.container}/extracts 
                                 
                                
                                ${project.build.directory}/logs/cargo.log         
                                
                                ${project.build.directory}/logs/container.out 
                            
                            
                            
                                
                                ${project.build.directory}/${project.cargo.container}/container
                                
                                
                                    
                                    ${project.cargo.host}
                                    ${project.cargo.port}
                                    ${project.build.sourceEncoding}
                                    
                                
                                
                            
                            
                            
                                   
                                     
                                     war
                                     
                                        optional root context
                                     
                                     optional url to ping to know if deployable is done or not
                                     optional timeout to ping (default 20000 milliseconds)
                                   
                            
                                                                
                            
                                    ${project.build.directory}/packaged
                            
                        
                        
                                                         
                            
                               start-container 
                               pre-integration-test 
                                start  
                            
                                                        
                            
                               stop-container 
                               post-integration-test 
                                stop  
                           
                           
                            
                               package-container 
                               post-integration-test 
                                package  
                           
                          
                      

 
 

你可能感兴趣的:(Java,Web,maven)