隨著技術的發展,Devops的概念越來越深入人心,Devops使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。DevOps對應用程式發布的有著重要影響,具備DevOps能力則發布軟體產品時風險更低,其中一個重要的原因就是自動化,減少了人工幹預,強大的部署自動化手段確保部署任務的可重複性、減少部署出錯的可能性。而實現軟體發布自動化的一個重要工具就是Jenkins。
Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,主要用於持續、自動的構建/測試軟體項目。Jenkins通常與版本管理工具(SCM)、構建工具結合使用。常用的版本控制工具有SVN、GIT,構建工具有Maven、Ant、Gradle。
然而Jenkins只負責軟體產品的發布,本身並不負責軟體的測試工作。怎樣才能在Jenkins集成測試功能,使軟體發布時自動進行一些測試工作,減少人工測試成本呢?比如Jenkins集成Junit。而說到Junit,則無需過多介紹,其是一個被廣泛使用的Java語言的單元測試框架。Junit以前一般需要程式設計師手動執行,不符合Devops的標準,本文就探討了Jenkins集成Junit自動測試的方法。
二 Jenkins集成Junit自動測試
筆者使用GIT進行版本管理,構建工具為Maven,spring boot工程。前期已實現了使用Jenkins進行程序自動構建與發布,這裡不再具體闡述,僅以一張圖做闡述。
本章具體講述如何在Jenkins集成Junit進行自動測試。
首先使用maven創建一個項目,這裡以eclipse為例,單擊New Maven Project
簡要填寫下相關GroupID和Artifact ID並以pom包的形式創建父文件。
創建完成後,在test父文件的基礎上創建maven module,右鍵新的maven工程。
選擇Maven Module
填寫一個工程名稱。
創建完工程後,我們簡要編寫下相關業務邏輯代碼,業務邏輯的代碼全部寫在src/main/java下,如圖所示
之後,我們需要在java工程中引入相關依賴,以maven為例,pom文件增加如下部分:
spring-boot-starter-test這個依賴在spring boot框架中集成了單元測試所需要的各種註解和功能。
其次,在src/main/test的目錄下創建測試案例,maven會自動選擇這個目錄下的類來進行測試案例的執行。
編寫測試程序,主要需要用到幾個註解:@RunWith,@SpringBootTest,@Before,@Test。
其中@RunWith是Junit4提供的註解,將Spring和Junit連結了起來。假如使用Junit5,不再需要使用@ExtendWith註解,@SpringBootTest和其它@Test默認已經包含了該註解。
@SpringBootTest替代了spring-test中的@ContextConfiguration註解,目的是加載ApplicationContext,啟動spring容器。使用@SpringBootTest時並沒有像@ContextConfiguration一樣顯示指定locations或classes屬性,原因在於@SpringBootTest註解會自動檢索程序的配置文件,檢索順序是從當前包開始,逐級向上查找被@SpringBootApplication或@SpringBootConfiguration註解的類。
@Before,@Test則是Junit的註解,before下的方法一般負責一些準備工作,比如登錄操作等,test下則是具體的測試方法。代碼示例如下:
在測試程序中,一般一個test方法對應一個需要測試的後臺方法,並需要根據實際情況即使修改優化。
最後,我們需要在Jenkins配置一下,將maven的test指令加入到配置項中具體如下:
通過上述操作後,我們每次發布程序時,Jenkins除了自動構建發布程序外,還會通過maven命令自動執行對應的Junit測試程序,並在每次構建的任務顯示測試結果。測試結果圖示例如下:
通過郵件配置,可將測試結果等情況以郵件形式發送給相關技術人員,配置信息如下。
三、小結
通過本文,我們了解了如何在Jenkins集成Junit單元測試並自動執行。通過集成,使單元測試工作自動化,減少了測試人員的工作量,極大地方便了測試工作。不過,我們需要及時維護相應的測試程序,才能更加準確地體現測試結果。
關注我,每天分享軟體測試技術乾貨和求職技巧