我父POM包含maven-surefire-plugin
和maven-failsafe-plugin
配置如下用我的接口com.adam.testutil.IntegrationTest
爲JUnit 4中@Category
註釋定義<groups>
和<excludedGroups>
參數,可以以將任何測試標記爲集成測試。是否有第三方庫的接口來使用JUnit的@Category()
父pom下的所有模塊(不僅僅是那些帶集成測試的)在他們的類路徑上需要com.adam.testutil.IntegrationTest
,這樣才能運行surefire和failafe插件,否則會拋出一個ClassNotFoundException
。
所以這個類必須在一個模塊中,所有的模塊必須聲明爲一個依賴。我寧願將它聲明爲父pom 中的依賴項,因此所有模塊都會自動繼承它,但這會創建一個循環依賴性問題,從而停止mvn的運行。
事實上,即使模塊中沒有單元或集成測試,模塊仍然需要聲明依賴關係。
我還必須使該模塊包含構建順序中的第一個模塊com.adam.testutil.IntegrationTest
,否則在第一次安裝任何新系統時將無法使用該模塊。我遇到了雞與雞蛋的困境 - 我不能僅僅在空白的存儲庫中運行mvn install
,因爲與IntegrationTest
的依賴關係不在本地存儲庫中。
其實我並不特別想創建一個新的模塊只是爲了提供IntegrationTest
。如果JUnit在庫中包含合適的org.junit.IntegrationTest
類,那將會非常簡單。
雖然我認爲@Cateogry
是一個很好的方式來註釋測試,以標記它們作爲集成測試,但在多模塊項目中它具有所有這些缺點。
是否有一個相關或適當命名的界面,在那裏我可以使用而不必擁有自己的界面?
在最糟糕的情況下,就JUnit,@Category
,maven-surefire-plugin和maven-failsafe-plugin而言,我可以使用JDK中的接口,例如, java.lang.Cloneable - 儘管任何閱讀代碼的人都會想知道現在發生了什麼。
我曾希望JUnit會有東西,但我找不到任何有用的東西。
我可以把一個依賴關係放在我父母的第三方庫中,一切都會好起來的。
我會接受任何人從第三方庫提供合適接口的答案,其中接口的名稱不會引起任何人第一次閱讀代碼的即時問題。
import org.junit.experimental.categories.Category
import com.adam.testutil.IntegrationTest
@Category(IntegrationTest.class)
public DbAndJpaIntegrationTests {
...
}
。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<excludedGroups>com.bp.gis.util.HeavyTest
</excludedGroups>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
<groups>com.bp.gis.util.HeavyTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
*然後,問題是,在項目中的每個模塊都必須有一個依賴於com.adam拉。 testutil.IntegrationTest *這裏需要什麼依賴項? – nullpointer
您是否還可以提供詳細信息,以瞭解IntegrationTest當前所在的位置,以及您目前使用的模塊結構是什麼? – nullpointer
我改寫了這個問題來回答你的問題。 – Adam