簡體   English   中英

IntelliJ 找不到類路徑測試資源

[英]IntelliJ can't find classpath test resource

我遇到了一個問題,IntelliJ 13.1.4 在運行單元測試時無法在我的模塊的src/test/resources目錄中找到ServiceLoader文件。

在回答之前請注意,我已完成以下所有操作:

  1. 該模塊是一個 Gradle 項目,如果我運行gradle test單元測試運行良好。
  2. 我過去在 IntelliJ 中成功運行了這個單元測試,它找到了模塊。 (也許是 IntelliJ 的早期版本?)
  3. 我已經仔細檢查了 IntelliJ 模塊設置,並將src/test/resources目錄標記為測試資源目錄。 (見下面的截圖。)
  4. 我在類中轉儲單元測試類的類加載器的類路徑; 它有build/classes/test/build/classes/java目錄,但既沒有build/resources/test/也沒有build/resources/main/
  5. 我點擊了按鈕來刷新所有 Gradle 項目。

關於還有什么可能導致 IntelliJ 在這里失敗的任何想法?


我的模塊配置的屏幕截圖,顯示了測試資源文件夾設置。

我的測試資源文件夾設置正確。

我設法通過創建一個與test目錄 (!) 平行的test test-resources目錄使其工作得更好。

盡管如此,仍然會遇到間歇性問題。 那些時候,可以打開 IntelliJ 項目設置並將測試資源定義為(Gradle 項目將保持不變)。

一定是 IntelliJ 錯誤,因為我在 Android Studio 中遇到過同樣的事情。

編輯:

找到了解決該問題的方法

在 Gradle 配置的末尾添加以下內容(並指定您的測試資源路徑):

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources

我在 IntelliJ 14 中遇到了類似的問題。盡管我的資源文件夾中有必要的文件並確保在模塊設置中將該文件夾指定為資源,但 IntelliJ 間歇性地無法將我的文件加載到類路徑中。

一種解決方法是在模塊設置中添加所需的文件夾作為模塊的依賴項。

在此處輸入圖片說明

首先,單擊“+”按鈕添加新的依賴項。

在此處輸入圖片說明

然后,選擇要添加到類路徑的文件夾。

在此處輸入圖片說明

然后選擇“類”選項。

在此處輸入圖片說明

完成后,重新構建您的模塊一次,希望這應該可以解決問題。

理想情況下,這根本不應該成為問題。 資源文件夾中的所有文件都應該直接放在類路徑中。 然而,每個 IDE 都有它的怪癖。

當我遇到同樣的問題時,我曾經將資源目錄取消標記為資源根目錄,然后再次將其標記為資源根目錄:

  1. 右鍵單擊資源文件夾 > 將目錄標記為 ... > 取消標記為資源根目錄
  2. 右鍵單擊資源文件夾 > 將目錄標記為 ... > 測試資源根

就我而言,我只是通過 maven 命令行運行測試,即基本的mvn clean install 之后它在IDEA中工作。

當存在多模塊項目時,IntelliJ 傾向於將頂層模塊設置為工作目錄。 如果是這種情況,可以嘗試將其更改為子模塊目錄。

我遇到了同樣的問題,Junit 失敗(FileNotFound),因為我的根項目文件夾中有空間。 例如:我的項目/項目1/....

  • 我從根文件夾中刪除了空間, my_project/project1/ 所有測試都正確通過。

如果您的項目是多 Maven 並且其他答案不起作用,請嘗試這個。

更改 intellij 中的工作目錄。 右擊,進入編輯配置,選擇需要運行的maven項目目錄。

在此處輸入圖片說明

對我來說, Build -> Recompile創建out項目結構中描述的文件夾。 然后它可以找到我的課程。 在此處輸入圖片說明

暫無
暫無

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

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