在JAVA程式中基於JUnit的全域單元測試程式

來源:互聯網
上載者:User
關鍵字 java 測試程式 JUnit 全域單元

而每個程式模組內又含有眾多的單元測試,此時如果程式師還每次都手工跑單元測試的話,工作量將是巨大的,而且這是種無聊的重複性工作。 本文將介紹一個基於 JHTTP://www.aliyun.com/zixun/aggregation/29926.html">Unit 的全域單元測試程式,程式師只需要執行一個檔, 就能將整個工程內所有的單元測試檔都自動執行,從而節約了程式師寶貴的時間,提高軟體產品開發進度。

最近參與了一個新產品的研發工作。 新產品是採用模組式開發方式,擁有眾多的功能模組,每一個模組是一個獨立的 JAVA 工程。 在產品中,為了保證各個模組的功能,目前其都有相應的 JUnit 測試程式。 隨著產品功能的逐漸完善,我們發現,程式中光是 JUnit Test 測試檔案,全部加起來已經有幾百個。 由於這些檔分佈在幾十個不同的工程不同的子目錄結構中,目前並沒有很好的工具可以將所有的單元測試一次運行。 而手工的運行這些單元測試是非常繁瑣的,對程式師來說是浪費時間的;又或者可以用腳本完成運行所有測試檔案的目的,但是由於我們採取的是敏捷開發的模式,JUnit Test 測試集合會不斷的持續增長,每增加一個 JUnit Test 檔 ,就需要立即修改腳本;一旦忘記修改,這個新加的測試檔案可能就無法被執行可見,用腳本來執行測試檔案也並不是很好的手段,依然給我們的開發帶來額外工作。 這裡11545.html">我們有了一個想法,做一個全域的單元測試程式,去自動的檢索工程集中所有的 JUnit Test 測試程式。 這個全域單元測試程式將基於 JUnit4 去運行。

核心機制:JUnit4 支援一次運行多個測試程式

首先我們要瞭解 JUnit4 支援多個 Class 集合作為輸入,並且調用 org.junit.runner.Runner.run() 方法運行輸入的測試類集合。 JUnit4 中已經定義了一些預設的 Runner,可以分別處理不同的輸入類集合:比如 BlockJUnit4ClassRunner,就是預設處理帶有 @Test 的 JUnit4 測試類的運行器;Suite,可以處理相容 JUnit3 的測試類的運行器,等等。

我們可以來看下面的 Runner 結構圖:

圖 1. JUnit Runner 結構圖

Runner 類定義了運行測試案例的介面,Suite 類繼承自 Runner 類,Suite 類支援 JUnit3 風格的測試類,可以用來執行多個測試案例。 因此我們的想法是,自訂一個繼承自 Suite 類的 Runner,就是上圖中得 AllClassRunner 類。 這個 Runner 的輸入將是工程集中所有找到的 JUnit Test Class 集合,這樣就可以一次運行工程中不同工程不同目錄下的所有 JUnit Test 檔了。 下面是我們的 AllClassRunner 類的代碼:

清單 1. AllClassRunner 類的代碼

public class AllJunitTestRunner extends Suite { public AllJunitTestRunner(Class<?> clazz, RunnerBuilder builde r) throws InitializationError { // 調用父類 Suite 方法直接運行所有符合要求的 JUnit Test 物件 super(builder, clazz, loadAllTestClass(filterCla ssNameList (clazz, loadAllClassesName(clazz)))); } }

loadAllClassesName 方法將會找到工程集中所有的 Class 檔案名的集合,filterClassNameList 將會對找到的 Class 檔集合進行過濾,過濾條件是針對檔案名稱。 loadAllTestClass 則會找到所有符合條件的 JUnitTest Class 集合。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.