我正在開發一個多模塊Maven Java EE項目。我們使用Spring爲每個模塊分別配置。我們在src/test/integration文件夾中放置了集成測試,以及相應模塊的UT(可以在src/test/ut中說)。Maven在多模塊集成測試類路徑中找不到一些資源
當執行模塊B的集成測試時,我們需要首先對模塊B依賴的模塊A執行一些清理/初始化。這意味着:我們需要訪問模塊A的測試數據,同時執行模塊B的測試。我爲模塊A的集成測試設置了模塊B集成測試的依賴關係,其範圍爲「test」。然後,模塊-A-test.jar被構建並部署在本地存儲庫中。
當執行模塊B的測試時,測試運行程序將初始化並且在類路徑中找到兩個模塊的application-context.xml。請注意,模塊A的application-context.xml駐留在module-A-test.jar中,因此該jar位於類路徑中。
模塊-A-Test.jar的的結構是:
module-A-test.jar
|- sqlFile
| |-clean-module-A.sql
| |-some other sql scripts
|-module-A-db.properties
|-module-A-db-config.xml
|-module-A-IT-config.xml
模塊-B的目標文件夾的結構是:
classes
|- all module clases as expected
surefire-reports
|- test result reports
test-classes
|- test classes
|- sqlFile
| |-clean-module-B.sql
| |-some more sql scripts
|-module-B-db.properties
|-module-B-db-config.xml
|-module-B-IT-config.xml
我讀行家測試周期類路徑是從這些來源建立:
- The test-classes directory
- The classes directory
- The project dependencies
- Additional classpath elements
從那我希望能夠閱讀清潔模塊A.sql和C瘦模塊,B.sql。 然而,當我運行代碼片段時,文件沒有找到(即使是模塊B),我跳出了ITException。當然對於clean-module-A.sql也是如此。
StringBuilder path = new StringBuilder();
path.append("sqlFile/");
path.append("clean-module-B.sql");
File file = new File(path.toString());
if (!file.exists()) {
throw new ITException("File " + file.getPath().toString() + " does not exist");
}
我希望我能夠正確清楚地描述這種情況。
現在最後的問題是: 爲什麼我能夠在claspath上看到module-B-IT-config.xml(甚至是module-A-IT-config.xml)而不是sql資源?
非常感謝你的任何想法!
帕夫林