Maven執行單元和集成測試
單元測試是對最小單元即方法的測試,要隔離對他模塊的依賴,一般采用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.集成測試兩種方式
然后測試代碼進行單元測試和集成測試區分,一般有兩種方式:
一是使用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>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!