2017-08-24 545 views
0

我有一個maven多模塊項目和一個模塊im使用集成測試對我的本地數據庫。我們使用Jenkins,當然,由於所需的數據庫,我不希望IT在Jenkins上運行。我發現解決方案使用maven-failsafe和選項「-DskipITs」。像魅力一樣工作,我可以承諾IT,不必擔心詹金斯抱怨執行IT。但後來我創造了我所有的測試套件在一個運行它們:Jenkins運行故障安全集成測試儘管-DskipITs

package mypackage; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 

@Suite.SuiteClasses({ 
    AccountManagerImportServiceIT.class, 
    AccountManagerToClientImportServiceIT.class, 
    ClientImportServiceIT.class, 
    ContactPersonImportServiceIT.class, 
    InvoiceImportServiceIT.class, 
    MeteringPointImportServiceIT.class, 
    MeteringPointToRoleImportServiceIT.class, 
    RoleImportServiceIT.class, 
    WhitelistImportServiceIT.class 
}) 

public class TestSuiteIT { 
} 

現在看來,詹金斯忽略故障安全的TestSuite中並試圖執行它,當然這使得構建不穩定。我不知道該怎麼做來告訴詹金斯也忽略TestSuite!奇怪的是:如果我在本地系統上執行「mvn clean install -DskipITs」(與Jenkins執行相同的命令),它就可以工作。但詹金斯總是試圖執行TestSuite。 :-(

+0

你使用surefire還是failafe插件? – ANIL

+0

故障安全,就像我在我的問題中寫的那樣。它可以從集成測試中「分離」單元測試。 – Vortilion

+0

在你的'pom.xml'有你所做的任何配置,你的'失敗安全-plugin'跳過測試事情是這樣的:? ' org.apache.maven.plugins Maven的故障安全-plugin 2.20 <配置> 真正 ' – ANIL

回答

0

您可以添加<skipTests>false</skipTests>pom.xmlproperties部分。

然後在plugins部分找到maven-failsafe-plugin並使用skipTests配置。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>x.xx</version> 
      <configuration> 
       <skipITs>${skipTests}</skipITs> 
      </configuration> 
</plugin> 

默認情況下,測試將啓用。如果你想跳過測試,使用mvn install -DskipTests=true

+0

這將跳過所有測試,但我不想讓Jenkins運行IntegrationTest。 UnitTests仍應該執行! – Vortilion

+0

您可以使用正則表達式排除單元測試:http://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion.html – ANIL

+0

我不想排除單元測試。我想排除IntegrationTests,但僅限於JENKINS。 – Vortilion