關於打包中是否會將單元測試一起打包的測試

一、前言

今天很閒,就想到了服務優化方面,將公司的某個服務打包完成後,發現包已經將近60多MB,比原來多了那麼一點(是因爲加了很多業務導致,和單元測試沒有關係),然後我就突然想到一個問題,單元測試,因爲我們寫的這些服務都是沒有寫單元測試代碼的,但是這就有一個問題了,如果我寫了單元測試的話,會不會把單元測試的代碼一起打包?這就有問題了,如果會的話,就會導致服務打包後越來越大,而這些單元測試在服務包中又沒有必要,所以自己進行了測試。

二、測試過程

1)我新建了一個SpringBoot的極致精簡Demo,因爲通過初始化一個SpringBoot項目的時候,會默認添加一個啓動類和默認test的包,這樣就夠了。項目目錄如下:
在這裏插入圖片描述
2)直接打包,看打包後target目錄中的文件。我是在IDEA中通過工具先執行clean,然後是執行compile,最後執行package命令
clean不用說了,會清空target目錄下的東西,
執行compile,會編譯程序,檢查是否有編譯錯誤以及將java文件生成對應的class文件。
執行package,也就是將服務打包,如果你沒有設置跳過單元測試的話,還會在打包前,執行單元測試。
在這裏插入圖片描述
可以看到沒有錯誤,並且打包成功。打包後target目錄如下:
在這裏插入圖片描述

3)解壓打包好的jar包(因爲jar包是ZIP壓縮包的一種,所以是可以直接解壓的),看裏面是否含有test的class文件。
在這裏插入圖片描述
可以看到只有三個文件夾;BOOT-INF裏面是你寫的項目的代碼以及一個lib文件夾,沒有test文件
META-INF 文件夾是你在pom裏面的依賴以及一個MF文件,這個MF文件就是用來描述項目中的資源位置(lib在哪,哪個是入口啓動)的文件
org文件是springBoot類加載器
4)結論:SpringBoot打包時不會將單元測試的文件一起打包。
三、擴展測試
打包完成後,在target文件夾中會有一個test-classes文件,這個文件能不能去掉呢?
我下面的測試是通過package過程中跳過單元測試和通過在maven中設置忽略某些文件這兩種方式進行的,過程和結果就不細說了,因爲自己傻了,因爲這些操作肯定會影響到test-classes文件的生成,因爲只要單元測試的代碼在,他就會在。(因爲程序啓動的時候實際執行的是class文件啊,就是這個目錄下的)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章