由單元測試引發的打包慘案
情景再現
自己寫了一個聚合專案,想把子模組打包出來java -jar
執行一下,結果發現,專案在IDEA中可以正常執行,但是一打包就報錯,而且maven
控制檯列印的日誌比平時多出好多,比較重要的日誌如下:
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ platform ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
注意,這代表maven
對你的單元測試部分的程式碼進行了檢驗,但是我的單元測試部分的程式碼是有問題的,單獨執行是可以的,但是maven
的test
檢查的時候一直報錯,說什麼無法正確地選擇資料庫引擎什麼的(應該是我的測試類的配置有問題),結果就是我無法正常地打包。
總結一下,這個場景是:
- 專案中存在測試類;
- 專案無法打包;
maven
控制檯上的日誌比平時多出了好多(有啟動spring的標誌);
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.2.RELEASE)
解決方案
發現是測試類的問題,我們只需要讓maven
跳過test環節即可,通常情況下使用maven package
命令打包時,會自動執行test包下的各個單元測試。這是因為spring-boot-maven-plugin
外掛已經整合了maven-surefire-plugin
外掛,會自動執行junit test
。但有一般情況我們是不需要自動執行這些測試的,不僅延長的打包所需要的時間。而且有些測試時連線了資料庫的,可能不經意間就對資料庫造成了影響。
我們有以下幾種方式來配置跳過test:
1. IDEA的配置
如果使用的IDE工具是IDEA,那麼可以直接在設定裡面配置:
File》Settings》
Apply之後點開maven
可以看到test已經被劃掉了。
2. 修改pom檔案
2.1 非springboot專案
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
2.1 springboot專案
spring-boot-maven-plugin外掛已經整合了maven-surefire-plugin外掛
只需要在pom.xml裡增加
true
即可。
<properties>
<skipTests>true</skipTests>
</properties>
參考文章:
相關文章
- i++引發的慘案
- 一次fork引發的慘案!
- 單元測試:單元測試中的mockMock
- .NET 專案中的單元測試
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 伺服器時間同步引發的"慘案"伺服器
- 為vue的專案新增單元測試Vue
- 單元測試-【轉】論單元測試的重要性
- “賣慘”的緣由!
- Redis中一個String型別引發的慘案Redis型別
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- Laravel 測試驅動開發 -- 正向單元測試Laravel
- 程式碼重構與單元測試——測試專案(二)
- 怎樣使用Spring Boot專案的單元測試Spring Boot
- 怎樣使用Spring Boot專案的單元測試?Spring Boot
- 檔案上傳的單元測試怎麼寫?
- Flutter 初始專案單元測試解讀Flutter
- 單元測試,只是測試嗎?
- 開發必備之單元測試
- 單元測試-一份如何寫好單元測試的參考
- 一起單測引起的專案載入失敗慘案
- 單元測試的規範
- Apache Camel的單元測試Apache
- java中的單元測試Java
- golang單元測試Golang
- 單元測試真
- iOS 單元測試iOS
- python 單元測試Python
- 前端單元測試前端
- Flutter 單元測試Flutter
- 單元測試 Convey
- 單元測試工具
- 聊聊單元測試
- 十五、單元測試
- Go單元測試Go
- SpringBoot單元測試Spring Boot
- 程式碼重構與單元測試——重構1的單元測試(四)
- Vue 應用單元測試的策略與實踐 04 - Vuex 單元測試Vue