Maven执行单元和集成测试

jopen 10年前

    单元测试是对最小单元即方法的测试,要隔离对他模块的依赖,一般采用stub和mock两种方式。

1.集成测试

    集成测试是对功能的测试,对于大部分web模块来说需要启动web容器,进行集成测试 

    maven生命周期中已经包含测试(test)和集成测试(integration-test),但未对两种测试代码做区分,需要自己解决启动web容器和代码区分问题。 

2.设置maven jetty插件自启动

    首先配置maven jetty插件在集成测试阶段自动启动 
<plugin>                  <groupId>org.mortbay.jetty</groupId>                  <artifactId>maven-jetty-plugin</artifactId>                  <version>6.1.10</version>                  <configuration>                      <stopPort>9966</stopPort>                      <stopKey>stop-jetty-for-it</stopKey>                      <contextPath>/SDKAuth</contextPath>                      <scanIntervalSeconds>10</scanIntervalSeconds>                      <jettyEnvXml>${basedir}/src/test/resources/jetty-env.xml</jettyEnvXml>                  </configuration>                  <executions>                      <execution>                          <id>start-jetty</id>                          <!--集成测试前启动jetty-->                          <phase>pre-integration-test</phase>                          <goals>                              <goal>run</goal>                          </goals>                          <configuration>                              <daemon>true</daemon>                          </configuration>                      </execution>                      <execution>                          <id>stop-jetty</id>                          <!--集成测试结束停止jetty-->                          <phase>post-integration-test</phase>                          <goals>                              <goal>stop</goal>                          </goals>                      </execution>                  </executions>              </plugin>

3.集成测试两种方式 </h2>

然后测试代码进行单元测试和集成测试区分,一般有两种方式: 
   一是使用maven profile,通过profile区分 
   二是根据生命周期,配置maven surefire 插件不同生命周期的includes或/exclueds属性 
   我使用的方式二,在src/test/java目中把单元测试代码放在unit包,集成测试代码放在integration包,具体配置如下: 

<plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-surefire-plugin</artifactId>                  <version>2.9</version>                  <configuration>                      <skip>true</skip>                  </configuration>                  <executions>                      <execution>                          <id>run-integration-test</id>                          <phase>integration-test</phase>                          <goals>                              <goal>test</goal>                          </goals>                          <configuration>                              <skip>false</skip>                              <includes>                                  <include>**/integration/**/*.java</include>                              </includes>                          </configuration>                      </execution>                      <execution>                          <id>run-test</id>                          <phase>test</phase>                          <goals>                              <goal>test</goal>                          </goals>                          <configuration>                              <skip>false</skip>                              <includes>                                  <include>**/unit/**/*.java</include>                              </includes>                          </configuration>                      </execution>                  </executions>              </plugin>              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-war-plugin</artifactId>                  <version>2.0</version>                  <configuration>                      <dependentWarExcludes>WEB-INF/lib</dependentWarExcludes>                  </configuration>              </plugin>          </plugins>
可以参考http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing 
3.运行集成测试命令 : 

mvn integration-test



4.结果:

2012-05-16 15:36:44.293::INFO:  Started SelectChannelConnector@0.0.0.0:8080   [INFO] Started Jetty Server   [INFO] Starting scanner at interval of 10 seconds.   -------------------------------------------------------   T E S T S   -------------------------------------------------------   Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.346 sec     Results :     Tests run: 1, Failures: 0, Errors: 0, Skipped: 0     [INFO] ------------------------------------------------------------------------   [INFO] BUILD SUCCESS

原文地址:http://www.blogjava.net/iamhuzl/articles/379488.html

</span>