簡體   English   中英

Maven模塊和Spring測試資源

[英]Maven modules and Spring test resources

我有一個由幾個模塊組成的Maven項目。 一些模塊依賴於其他模塊,例如模塊C <-模塊B <-模塊A。模塊C依賴於模塊B,模塊B依賴於模塊A。

在每個模塊中,我的main /資源和測試/資源中都有Spring配置文件,正在測試的文件用於單元測試,而在主要的文件用於發布/生產。 每個配置文件都是自包含的-模塊B僅包含其Spring配置(文件名類似foo-B.xml,foo-A.xml)

但是,當我需要測試模塊C時,我需要在測試/資源下引用模塊B的Spring配置,但是其中包含的是模塊B的main / resources配置文件。 這就產生了一個問題,因為生產文件具有對JNDI數據源的引用,而其中的一個沒有。

如何從模塊依賴項中獲取Maven或Spring引用測試配置文件?

Maven將源類和資源與測試類和資源分開。 您可以配置模塊B來使用maven-jar-plugin test-jar目標創建一個測試jar。 然后,您可以將模塊C參考模塊B的測試代碼作為依賴項。

<dependency>
    <groupId>com.myCompany</groupId>
    <artifactId>moduleB</artifactId>
    <version>${project.version}</version>
    <classifier>tests</classifier>
    <scope>test</scope>
</dependency>

或者,您可以創建一個常規的Maven項目,僅包含您要共享的測試代碼,然后在需要時將其作為測試依賴項包含在內。 這個想法在maven jar插件的用法文檔中進行了描述

我不確定這可以做到。 Maven故意不在工件中包含測試資源。 如果我在您的位置,我將在模塊C中復制測試資源。大概,您沒有在兩個模塊中測試相同的東西,因此希望它不會導致復制粘貼/雙重維護的壞情況。

順便說一句,我嘗試避免使用“生產”數據源和“測試”數據源。 兩者使用相同的JNDI名稱,但將JNDI提供程序配置為根據情況指向測試或生產。 例如,我們所有的Web服務器都定義了相同的數據源,但是dev / qa / prod的JDBC URL不同。 對於單元測試,請使用諸如simple-jndi之類的東西來模擬JNDI環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM