簡體   English   中英

IntelliJ在類路徑上包含來自另一個Maven模塊的測試類

[英]IntelliJ includes test-classes from another maven module on classpath

在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模塊中有另一個測試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模塊中沒有dataSource.xml。

我在運行HomeControllerTest時在IntelliJ中打印了類路徑,但我感到驚訝的是,即使HomeControllerTest是webapp-module的一部分,也存在來自數據庫模塊的測試類。

類路徑(從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行為以匹配構造類路徑的行家方式?

該問題原來是IntelliJ 13版本的問題。我僅測試了一個特定測試時就測試了所描述的問題,並且測試工作正常。 但是,當我嘗試運行所有測試時(“測試種類”:“全包”和“搜索測試”:“整個項目”),我遇到了問題中所述的麻煩。

根據JetBrains JIRA的說法,該問題已在IntelliJ 14版中修復-我沒有檢查。

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

暫無
暫無

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

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