我的單元測試之一是由測試數據驅動的,存儲在src/test/resources/testData.txt
中。由於Maven會將src/test/resources
的內容複製到類路徑上的target/test-classes/
,我可以方便地從類路徑中讀取該文件,而不必關心它的絕對文件名。到現在爲止還挺好。有沒有一種便捷的方式來獲取Maven項目中的資源路徑?
現在我正在討論一些代碼,這些代碼會使用從遠程系統獲取的數據更新該文件。該代碼將很少運行,而不是作爲構建的一部分。更新的文件將被提交到源存儲庫。爲了追加到文件中,我需要知道src/test/resources
中原始文件的路徑(附加到target/test-classes/
中的那個顯然不起作用)。
如何以便攜方式確定路徑?我寧願不編碼src/test/resources/
,因爲這些目錄名稱可能實際上會改變。此外,如果使用除我的項目基目錄以外的當前工作目錄執行,則會中斷。
任何想法?
不知道我是否理解正確。 '$ {project.basedir}/src/test/resources'會很好,但是如何從我的代碼中解析'$ {project.basedir}'的值? –
通常情況下,你需要在你的測試中加入一個屬性文件,如'myFile.path = $ {project.basedir}/src/test ...',你可以[過濾屬性](http:/ /maven.apache.org/plugins/maven-resources-plugin/examples/filter.html),獲取由maven插入的正確路徑。 –
謝謝瑞安,這是對我的問題非常合理的解決方案。但是,這意味着除了POM之外,還要維護一個包含構建配置的單獨文件,如果可能的話,我想盡量避免這些文件。受到你的建議的啓發,我發現了一個我個人更喜歡的不同解決方案,我將在下面發佈一個答案。 –