簡體   English   中英

IntelliJ Idea“Make”導致在運行JUnit Test時重建

[英]IntelliJ Idea “Make” causes rebuild while running JUnit Test

我正試圖從Eclipse遷移到Idea並且很難嘗試執行JUnits。 該應用程序是一個具有10k + java類的遺留應用程序。

每當我運行任何JUnit時,要么編譯測試用例需要3-4分鍾然后執行它,要么為該特定的JUnit類提供ClassNotFoundException。

我完成了項目的全部構建(大約需要9分鍾)。 我希望在構建之后,只應在“Make”期間重新編譯修改過的文件。 在我的情況下,由於我沒有更改任何文件,JUnit應該立即執行。

我正在使用IntelliJ Idea 12社區版,我在編譯器設置中選中了“使用外部版本”。

我錯過了任何設置或做錯了嗎?

編輯:在運行JUnit時,我觀察了輸出類目錄,看起來它正在刪除生成的類並再次編譯它們!

事實證明,IntelliJ IDEA不喜歡整個項目中的單個錯誤,即使錯誤在某個類中與您正在運行的測試完全無關。 可能是Make進程認為需要重新編譯包含編譯錯誤的文件。 但即便如此,為什么清除已編譯的類並重新編譯它們對我來說仍然是一個謎。

解決此問題的方法是確保項目中沒有錯誤 一旦我修復了所有編譯錯誤並進行了完全重建,現在測試需要大約2-3秒才能啟動。

保存JUnit配置然后編輯它時,您可以編輯“啟動前”部分。 你可以從那里刪除“Make”並輸入“Make,no error check”。 這應該加快構建過程並解決問題。

在IDEA 13.1.5上進行了測試

為了確保我們以相同的方式使用術語compile,make,build和rebuild ,請參閱幫助指南中的編譯類型基本概念>編譯器和構建器>編譯類型 )或通過其webhelp等效項

默認情況下,當您運行單元測試或應用程序時,IDEA會執行Make ,因此應該只編譯自上次運行以來已更改的類。 潛在的問題(尤其是遺留項目)存在於依賴性解決方案中。 make進程還將編譯已更改的所有依賴項。 如果項目具有某些循環/交叉依賴關系,則它可以“混淆”遞歸依賴性檢查,因此可以編譯完整的模塊或模塊。 這可能是您遇到的問題。

即使沒有文件發生更改,“不太理想”的依賴關系圖也可能導致重新編譯。 請記住,make過程仍應運行。 正是該進程檢查已修改的類,然后啟動編譯。 但如果沒有代碼改變,那應該只需要一兩秒鍾。 要檢查/嘗試的一些事項:驗證在單元測試運行/調試配置( 運行>編輯配置 )中,在“啟動前”部分中只有“生成”。 (這應該是默認值,可以在該對話框的“默認”部分中進行修改)。 最后,您可以嘗試使IDEA緩存/索引無效文件>無效緩存 )並重新啟動IDEA。 在重新啟動時,IDEA將需要重新索引您的項目,您將需要/應該運行另一個完全重建。 索引中可能存在一些導致重新編譯的損壞。

只是為了檢查明顯,請確保您使用的是最新版本的IDEA(12.1.6)。

暫無
暫無

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

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