2014-12-04 43 views
0

當我在IntelliJ中運行測試時,訪問資源文件時遇到問題。當我從Maven運行相同的測試時,一切都按預期工作。IntelliJ包含類路徑上的另一個maven模塊的測試類

maven3項目有2個模塊:數據庫模塊和webapp模塊。 webapp-module依賴於數據庫模塊。

文件:

database-module/src/main/resources/dataSource.xml 
database-module/src/test/resources/dataSource.xml 
database-module/src/test/java/org/example/DataSourceTest.java 
webapp-module/src/test/java/org/example/HomeControllerTest.java 

有數據庫模塊測試類DataSourceTest。該測試使用classpath中的dataSource.xml。

DataSourceTest.java包含:

@Value("classpath:dataSource.xml") 
private Resource myDataSource; 

註釋@Value是org.springframework.beans.factory.annotation.Value。

當我運行測試時,變量myDataSource包含來自src/test/resources的數據。它適用於Maven和IntelliJ。

我在webapp-module中有另一個測試HomeControllerTest。該測試還以與DataSourceTest相同的方式使用dataSource.xml。然而,從Maven和IntelliJ運行測試有所不同:

如果我從Maven運行HomeControllerTest,它將按預期工作:它使用database-module/src/main/resources/dataSource.xml。 如果我從IntelliJ運行HomeControllerTest,它使用database-module/src/test/resources/dataSource.xml。

文件dataSource.xml僅存在於數據庫模塊中,webapp-module中沒有dataSource.xml。

我在運行HomeControllerTest時在IntelliJ中輸出了類路徑,而且我驚訝地發現數據庫模塊中的測試類存在,即使HomeControllerTest是webapp模塊的一部分。

類路徑(當測試從運行的IntelliJ):

C:/myproject/database-module/test-classes 
C:/myproject/database-module/classes 
C:/myproject/webapp-module/test-classes 
C:/myproject/webapp-module/classes 

該測試使用JUnit4。

當我從webapp-module調用測試時,爲什麼classpath上有數據庫模塊/測試類? 如何更改IntelliJ行爲以匹配構建類路徑的maven方式?

+0

你有沒有從你的web應用模塊依賴於你的數據庫模塊? – 2014-12-04 17:09:43

+0

是的,我喜歡。當我執行「mvn clean install」時,首先構建數據庫模塊,然後是webapp模塊。 HomeControllerTest使用數據庫模塊中的dataSource.xml,因此顯然存在依賴關係。但是,當我使用IntelliJ時,HomeControllerTest將拾取錯誤的dataSource.xml(即。database-module/src/test/resources/dataSource.xml,而不是database-module/src/main/resources/dataSource.xml)。 – tafit3 2014-12-04 18:47:57

+0

您確定數據庫模塊測試jar中的webapp-module中沒有依賴項嗎? 什麼是Intellij運行/調試配置 - >您的測試 - >使用模塊的類路徑 – 2014-12-05 10:16:41

回答

0

問題原來是IntelliJ版本13的一個問題。我測試了描述的問題,並且我的測試只在運行一個特定的測試時有效。但是,當我嘗試運行所有測試時(「測試種類」:「全部包裝」和「搜索測試」:「在整個項目中」),我遇到了問題中描述的問題。

根據JetBrains JIRA,問題在IntelliJ版本14中修復 - 我沒有檢查。

https://youtrack.jetbrains.com/issue/IDEA-123962

相關問題