一文教你使用Jenkins集成Junit自動化測試,超簡單!

2020-12-11 51Testing軟體測試網

隨著技術的發展,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單元測試並自動執行。通過集成,使單元測試工作自動化,減少了測試人員的工作量,極大地方便了測試工作。不過,我們需要及時維護相應的測試程序,才能更加準確地體現測試結果。

相關焦點

  • Jenkins持續集成體系 | 最完整的介紹及資料
    如:自動化,性能,打包,部署,發布&發布結果自動化驗證,接口測試,單元測試各種你能想到的,和不能想到的Jenkins可自由部署在各平臺:Windows, Linux, Mac如下簡單列幾個應用場景:使用Jenkins搭建iOS/Android
  • 微服務下的持續集成-Jenkins自動化部署GitHub項目
    附圖一張我們的Jenkins:二、DevOps概念DevOps 一詞的來自於 Development 和 Operations 的組合,突出重視軟體開發人員和運維人員的溝通合作,通過自動化流程來使得軟體構建、測試、發布更加快捷、頻繁和可靠。
  • 淺談BDD下的自動化測試框架
    本文將通過簡單的例子,向大家展示如何使用Cucumber 描述需求,編寫、執行測試用例,並輸出測試報告。目錄:一、什麼是BDD二、為什麼要使用BDD三、常用的BDD測試框架四、BDD自動化測試框架Cucumber
  • JUnit測試單元框架
    他是用於單元測試框架體系xUnit的一個實例(用於java語言)。主要用於白盒測試,回歸測試。  junit安裝步驟  1、在http://download.sourceforge.net/junit/ 中下載JUnit包並將Junit壓縮包解壓。  2、添加CLASSPATH環境變量.
  • Spring Boot 的單元測試和集成測試
    學習如何使用本教程中提供的工具,並在 Spring Boot 環境中編寫單元測試和集成測試。1. 概覽 本文中,我們將了解如何編寫單元測試並將其集成在 Spring Boot 環境中。你可在網上找到大量關於這個主題的教程,但很難在一個頁面中找到你需要的所有信息。我經常注意到初級開發人員混淆了單元測試和集成測試的概念,特別是在談到 Spring 生態系統時。
  • 同時連接多臺手機,使用appium實現app自動化測試
    同時連接多臺手機,使用appium實現app自動化測試使用appium可以實現app自動化測試,我們之前是連接一臺手機去運行,如何同時連接多臺手機呢?很多人可能想到的是多線程(threading)。今天分享一種比多線程更簡單的方法,雖然不是多臺手機同時運行,但可以連接多臺手機依次運行。大致的運行方式是:001號測試用例:A手機,B手機...,002號測試用例:A手機,B手機...
  • Docker+jenkins小知識,講解通俗易懂,有必要收藏
    持續集成是軟體開發中一個非常重要的環節,我們都知道持續集成的這種方式,不僅僅是影響軟體開發的效率,實際上還會對我們軟體開發的流程會產生一定的影響,例如:我們所選擇的構建的方式,那麼你的應用程式的部署的方式,軟體開發與測試需要不斷地對應用進行持續構建,這些都會受我們持續集成的構建的方案所影響。
  • Appium 必須掌握的移動端自動化測試框架
    移動應用在企業中的地位越來越重要,為了更好將產品推向市場,企業對移動軟體測試的要求越來越高,為了完成大量的高強度移動端的測試需求,掌握高校的移動自動化測試工具則成為每一個軟體測試工程師必備的要求。這裡為大家詳細介紹一下Appium——一款軟體測試工程師必須掌握的開源測試自動化框架。
  • Jenkins詳細教程
    >」進行關注,微信公眾號TestMadman一、Jenkins是什麼?Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具,起源於Hudson(Hudson是商用的),主要用於持續、自動的構建/測試軟體項目、監控外部任務的運行(這個比較抽象,暫且寫上,不做解釋)。Jenkins用Java語言編寫,可在Tomcat等流行的servlet容器中運行,也可獨立運行。通常與版本管理工具(SCM)、構建工具結合使用。
  • 自動化測試學習路線
    想必每一個大神,都是從小白一步步走上來的。當然呢,我很能理解小白的想法,因為平時經常和一些剛入門自動化測試的同行交流,也很深入的了解到他們的一些困惑。大部分小白想的無非是以下幾點問題:1.自動化測試好學嗎?2.不學/不寫代碼能做自動化測試嗎?3.怎樣學習自動化測試?4.學自動化測試要先學習哪個方向?學ui自動化?還是接口自動化?
  • Jenkins 多環境 CI/CD 架構設計
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫來源:https://url.cn/5VKO1Gu自動化部署主要是為了解決項目多、環境多、持續集成慢、部署操作麻煩、手動操作易出錯、自動化運維等問題。
  • 測試員,你遇到過哪些自動化致命難題?3步教你搬走這些絆腳石
    在自動化測試的過程中,你是否遇到過以下問題?1、一個人做自動化的時候挺和諧的,啥毛病沒有,多人自動化的時候就發現有很多衝突。2、腳本到底是拆分好,還是合在一起好,如果拆,要怎麼拆?3、具體的框架出來後,接下來就是各位自動化測試的工程師們按照既定的規則進行填充用例,覆蓋更多的場景。千萬不要零散的寫腳本,你一腳本我一個腳本,沒有規範,這樣其實對做持續集成來說會是一個非常難的事情,你可能會花很多的時間去調整腳本,所以一開始就要先搭設框架。
  • JUnit及其相關的單元測試技術
    在《快速軟體開發》一書中已引用了大量的研究數據指出:最後才修改一個bug的代價是在bug產生時修改它的代價的10倍。在現代軟體開發過程中,不管是xp還是rup 都是十分重視單元測試,已經把單元測試作為貫穿整個開發周期的一項重要的開發活動。單元測試如此重要,那麼怎樣寫好單元測試用例呢?這就需要了解 Junit及其相關的測試工具了。  1.
  • 技術中臺之DevOps自動化測試實踐
    DevOps作為技術中臺的「效率&精益「平臺,集成了多方測試工具供使用。目前集成的自動化測試工具有:robot-framework 、Jmeter。目錄:1.為什麼採用RobotFramework?2.什麼是RobotFramework?3.RF如何做接口測試?
  • JUnit概述——JAVA成長之路
    最主要地一個Package就是org.junit.*。把它包含進來之後,絕大部分功能就有了。還有一句話也非常地重要「import static org.junit.Assert.*;」,我們在測試的時候使用的一系列assertEquals方法就來自這個包。大家注意一下,這是一個靜態包含(static),是JDK5中新增添的一個功能。
  • 自動化測試面試題(附答案)
    android和ios的UI自動化測試;5)熟悉jenkins、svn、git的搭建和使用;6)熟悉常用性能測試工具的使用,並可進行分析調優:ab、jmeter、loadrunner、locust等,有分布式壓測經驗優先;7)熟悉使用django開發框架,可完成web頁面和功能的開發(此條可放寬);8)具備豐富的系統測試經驗,並且能夠進行系統級的原因定位與分析
  • pytest「conftest、pytest參數化、重運行、出測試報告」
    因為你這個數據是要給測試用例用的。那麼這個參數名就是用來接收每一組數據,如果你這個列表當中有10組數據,那麼參數名就依次接收這10組數據。參數名是放在測試用例當中的參數。列表數據就是那10組數據。和多個文件夾沒關係,是從當前路徑下面一層一層去找到對應的就行了。三、重運行Web自動化中還重視重運行。在調試的時候會發現用例有的時候能運行成功,有的時候它不能運行成功。Web自動化的用例,準確來說是不太穩定的。
  • 使用Gitlab CI對Kubernetes上的應用進行JUnit測試
    你要插入以下反向條件:{{- if ne .Values.global.run_tests "yes" }}---Hey, I'm another YAML{{- end }}然而如果其他測試需要額外的基礎設施(例如:Redis, RabbitMQ, Mongo, PostgreSQL…),你可以啟用相應的YAML文件並將它們部署到測試環境中
  • 【松勤軟體測試基礎】APP常見測試點總結
    松勤與你相約基礎就業班自動化測試全棧班
  • 自動化測試十大必備(背)面試題!(第一個就刷掉一大批人)
    自動化你怎麼去做的自動化運行環境、自動化如何分布式、批量運行如何持續集成這裡面問題太多了,給大家簡單的看幾個典型面試題但是這些往往一般都只用在腳本的調試,不會真正的出現在自動化測試用例中。你想一想,一個用例十行你加了十個,一個等三秒那十個等三十秒,一個用例三十秒是不可取的。