iamhuzl

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            1 隨筆 :: 13 文章 :: 21 評論 :: 0 Trackbacks
              單元測試是對最小單元即方法的測試,要隔離對他模塊的依賴,一般采用stub和mock兩種方式
              集成測試是對功能的測試,對于大部分web模塊來說需要啟動web容器,進(jìn)行集成測試
              maven生命周期中已經(jīng)包含測試(test)和集成測試(integration-test),但未對兩種測試代碼做區(qū)分,需要自己解決啟動web容器和代碼區(qū)分問題。
              首先配置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>
                                  <!--集成測試結(jié)束停止jetty-->
                                  <phase>post-integration-test</phase>
                                  <goals>
                                      <goal>stop</goal>
                                  </goals>
                              </execution>
                          </executions>
                      </plugin>
          

             然后測試代碼進(jìn)行單元測試和集成測試區(qū)分,一般有兩種方式:
             一是使用maven profile,通過profile區(qū)分
             二是根據(jù)生命周期,配置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
              運(yùn)行集成測試命令 : mvn integration-test
          引用

          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



          已有 0 人發(fā)表留言,猛擊->>這里<<-參與討論


          ITeye推薦



          posted on 2012-05-16 15:40 溫水青蛙 閱讀(2991) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 越西县| 高平市| 斗六市| 平湖市| 汉源县| 安塞县| 盐城市| 班玛县| 绵竹市| 榆树市| 天水市| 蒙自县| 青田县| 墨玉县| 日照市| 南郑县| 平度市| 澄江县| 本溪市| 永平县| 兰西县| 巴南区| 鄂温| 北票市| 龙南县| 吴川市| 洛隆县| 云南省| 上思县| 绥宁县| 丹棱县| 郧西县| 松原市| 时尚| 台江县| 沂水县| 闽清县| 叶城县| 富民县| 友谊县| 容城县|