由單元測試引發的打包慘案
情景再現
自己寫了一個聚合專案,想把子模組打包出來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>
參考文章:
相關文章
- 單元測試:單元測試中的mockMock
- .NET 專案中的單元測試
- iOS 開發-單元測試iOS
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 為vue的專案新增單元測試Vue
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- Nginx 快取引發的跨域慘案Nginx快取跨域
- Laravel 測試驅動開發 -- 正向單元測試Laravel
- [iOS單元測試系列]單元測試編碼規範iOS
- 伺服器時間同步引發的"慘案"伺服器
- 一次 DNS 快取引發的慘案DNS快取
- 一次dns快取引發的慘案DNS快取
- 開發必備之單元測試
- 程式碼重構與單元測試——測試專案(二)
- Flutter 單元測試Flutter
- Go單元測試Go
- 單元測試工具
- iOS 單元測試iOS
- 前端單元測試前端
- golang 單元測試Golang
- PHP 單元測試PHP
- phpunit單元測試PHP
- JUnit單元測試
- unittest單元測試
- Junit 單元測試.
- java中的單元測試Java
- ios最簡單的測試打包方式iOS
- Android單元測試-對Activity的測試Android
- Android單元測試-對View的測試AndroidView
- Flutter 初始專案單元測試解讀Flutter
- 前端測試:Part II (單元測試)前端
- 檔案上傳的單元測試怎麼寫?
- 程式碼重構與單元測試——重構1的單元測試(四)
- Vue 應用單元測試的策略與實踐 04 - Vuex 單元測試Vue
- 開發人員必備的技能——單元測試
- 開發祕籍——單元測試的迷惑與思考
- iOS開發中的單元測試(三)——URLManager中的測試用例解析iOS
- Vue 應用單元測試的策略與實踐 02 - 單元測試基礎Vue