cargo maven_与Maven 3,Failsafe和Cargo插件的集成测试
cargo maven
開(kāi)箱即用,可以在Maven中進(jìn)行單元測(cè)試。 因此,它也經(jīng)常用于集成測(cè)試。 這樣做的主要缺點(diǎn)是集成測(cè)試可能需要花費(fèi)更多的時(shí)間來(lái)執(zhí)行,并且因?yàn)闆](méi)有人喜歡每次構(gòu)建都要等待很長(zhǎng)時(shí)間–只是使用-Dmaven.test.skip=true標(biāo)志跳過(guò)了測(cè)試
為了執(zhí)行與Maven的集成測(cè)試,我們應(yīng)該使用Maven Failsafe插件 。 因此,我們可以通過(guò)調(diào)用mvn test或使用mvn verify執(zhí)行集成測(cè)試來(lái)快速運(yùn)行單元測(cè)試。
集成測(cè)試應(yīng)在盡可能與生產(chǎn)環(huán)境相似的環(huán)境中運(yùn)行。 如果您的應(yīng)用程序是WAR或EAR軟件包,則可以使用Maven Cargo插件來(lái)告訴Maven將其部署在應(yīng)用程序服務(wù)器或servlet容器上,并在已部署的應(yīng)用程序上執(zhí)行集成測(cè)試。
Maven故障安全插件配置
為了啟用集成測(cè)試階段,必須將故障安全插件配置添加到pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">...<build><plugins>...<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-failsafe-plugin</artifactId><version>2.12</version><executions><execution><goals><goal>integration-test</goal><goal>verify</goal></goals></execution></executions></plugin></plugins></build>... </project>現(xiàn)在,當(dāng)調(diào)用mvn verify時(shí),包含測(cè)試匹配的所有文件src/test/java/**/*IT.java將在集成測(cè)試階段執(zhí)行。
集成測(cè)試不過(guò)是使用JUnit或TestNG批注的類來(lái)告訴Maven哪種方法是測(cè)試,并且應(yīng)該使用與單元測(cè)試相同的方式來(lái)聲明。
Maven Cargo插件配置
Cargo插件支持市場(chǎng)上所有主要的應(yīng)用服務(wù)器 。 在我的示例中,我將使用默認(rèn)的Apache Tomcat 7安裝。
- Tomcat正在集成前階段啟動(dòng)
- tomcat在整合后階段處于停止?fàn)顟B(tài)
效果很好。 現(xiàn)在,當(dāng)您第一次執(zhí)行mvn verify時(shí),您可以看到在集成測(cè)試運(yùn)行之前正在下載并啟動(dòng)Tomcat。
集成測(cè)試類示例
現(xiàn)在,我們終于可以編寫(xiě)有用的集成測(cè)試了–將檢查應(yīng)用程序是否發(fā)送正確的錯(cuò)誤代碼作為響應(yīng)。
import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.junit.Test;import java.io.IOException;import static org.fest.assertions.Assertions.assertThat;public class CheckApplicationDeployIT {private static final String URL = "http://localhost:8080/myApp/testURL";@Testpublic void testIfAppIsUp() throws IOException {//givenHttpClient client = new DefaultHttpClient();HttpGet httpget = new HttpGet(URL);//whenHttpResponse response = client.execute(httpget);//thenassertThat(response.getStatusLine().getStatusCode()).isEqualTo(HttpStatus.SC_OK);} }當(dāng)然,集成測(cè)試應(yīng)該更復(fù)雜,并且實(shí)際上要測(cè)試行為。 現(xiàn)在,您可以設(shè)置Waitr,Selenium或任何其他滿足您最佳需求的解決方案,并創(chuàng)建實(shí)際的集成測(cè)試。
結(jié)論
您是否總是應(yīng)該在集成測(cè)試中測(cè)試已部署的應(yīng)用程序? 它非常有用,但并非總是如此。 如果您的應(yīng)用程序某種程度上取決于用戶的IP地址,則您將無(wú)法在不同的請(qǐng)求中對(duì)其進(jìn)行更改。
但是,如果您的應(yīng)用程序是具有HTML或REST前端的經(jīng)典Web應(yīng)用程序,則強(qiáng)烈建議使用。
翻譯自: https://www.javacodegeeks.com/2013/12/integration-tests-with-maven-3-failsafe-and-cargo-plugin.html
cargo maven
總結(jié)
以上是生活随笔為你收集整理的cargo maven_与Maven 3,Failsafe和Cargo插件的集成测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 朋友圈如何设置三天可见
- 下一篇: [免费网络研讨会] Java 11的第一