我無法獲取單元測試以使用src\test\resources
提供的資源而不是src\main\resources
中的資源。是的,所討論的資源在兩個地方的命名都是相同的。無法讓Maven(和Eclipse)在測試時使用測試資源
我做的研究相當多,看着StackOverflow的崗位,如:
但是這個基本問題已經難住了我。下src\test
的Eclipse下src\main
- 應用源&資源&資源(感謝m2eclipse插件)已經:
我有一個非常標準的Maven的Java項目設置
src\main\java
,src\main\resources
,src\test\java
和src\test\resources
都在其構建路徑中。使用此設置,當我在Eclipse資源文件中運行我的單元測試時,
src\main\resources
正在被引用。我可以看到爲什麼(因爲它們處於構建路徑中),但我不知道如何防止它。單元測試配置面板不允許我調整(默認)類路徑組件的順序。即使我想掩飾自己無法從Eclipse運行測試,Maven也不會很好玩。我可以看到
processResources
步驟是將所有測試資源複製到target\test-classes
樹下。但是,執行單元測試時,正在諮詢target\classes
下的資源文件的副本。當然,我可以俯視東西明顯。我感謝您提供的任何幫助。
[編輯] 添加更多(可能相關的信息):
有問題的資源文件是一個名爲
persistence.xml
文件。它由Eclipselink用於連接到關係數據源。該應用程序使用的文件版本位於src\main\resources\META-INF
中。 (例如WAR的)Maven版本將META-INF
目錄放在classes
目錄下。因此EclipseLink工具找到這個文件。src/main | + -- java/com/company/ProductDao.java | + -- resources/META-INF/persistence.xml (Requires application container) | src/test | + -- java/com/company/ProductDaoTest.java | + -- resources/META-INF/persistence.xml (out of container for unit tests) |
的外賣這裏是:的EclipseLink需要在
META-INF
目錄中稱爲persistence.xml
在classpath文件(是的,默認可以重寫,但我們不要去那裏)。因此,當單元測試運行時,調用相同的應用程序邏輯。但是不能使用
src\main\resources
中的文件版本。A 不同版本在src\test\resources
目錄中可用。由於正在使用
src\main\resources
中的版本,因此出現,我唯一的辦法是在單元測試期間指示Eclipselink查找不同的文件名。
我敢肯定,你可以在你的src/main/resources/META-INF/persistence.xml中創建一個新的持久化單元,你可以在單元測試和Persistence.createEntityManagerFactory中使用這似乎是什麼反正你會用兩個persistence.xml文件來做。 –
不同的持久性單元(可能)在同一個文件中。這是一個有趣的想法。我需要弄清楚如何指示類使用不同的持久性單元(PU)。在通過Java類上的註釋識別PU之後(在我的情況下)使用Spring進行連線。感謝提示,我將不得不考慮它。 –