• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件單元測試利器 JUnit 4

    發布: 2009-12-17 10:06 | 作者: 不詳 | 來源: 領測國際軟件測試網采編 | 查看: 49次 | 進入軟件測試論壇討論

    領測軟件測試網

          package com.ai92.cooljunit; import org.junit.runner.RunWith; import org.junit.runners.Suite; …… /** * 批量測試 工具包 中測試類 * @author Ai92 */ @RunWith(Suite.class) @Suite.SuiteClasses({TestWordDealUtil.class}) public class RunAllUtilTestsSuite { }

      上例代碼中,我們將前文提到的測試類 TestWordDealUtil 放入了測試套件 RunAllUtilTestsSuite 中,在 Eclipse 中運行測試套件,可以看到測試類 TestWordDealUtil 被調用執行了。測試套件中不僅可以包含基本的測試類,而且可以包含其它的測試套件,這樣可以很方便的分層管理不同模塊的單元測試代碼。但是,您一定要保證測試套件之間沒有循環包含關系,否則無盡的循環就會出現在您的面前……。

      參數化測試

      回顧一下我們在小節“JUnit 初體驗” 中舉的實例。為了保證單元測試的嚴謹性,我們模擬了不同類型的字符串來測試方法的處理能力,為此我們編寫大量的單元測試方法?墒沁@些測試方法都是大同小異:代碼結構都是相同的,不同的僅僅是測試數據和期望值。有沒有更好的方法將測試方法中相同的代碼結構提取出來,提高代碼的重用度,減少復制粘貼代碼的煩惱?在以前的 JUnit 版本上,并沒有好的解決方法,而現在您可以使用 JUnit 提供的參數化測試方式應對這個問題。

      參數化測試的編寫稍微有點麻煩(當然這是相對于 JUnit 中其它特性而言):

      1.

      為準備使用參數化測試的測試類指定特殊的運行器 org.junit.runners.Parameterized。

      2.

      為測試類聲明幾個變量,分別用于存放期望值和測試所用數據。

      3.

      為測試類聲明一個使用注解 org.junit.runners.Parameterized.Parameters 修飾的,返回值為 java.util.Collection 的公共靜態方法,并在此方法中初始化所有需要測試的參數對。

      4.

      為測試類聲明一個帶有參數的公共構造函數,并在其中為第二個環節中聲明的幾個變量賦值。

      5.

      編寫測試方法,使用定義的變量作為參數進行測試。

      我們按照這個標準,重新改造一番我們的單元測試代碼

      package com.ai92.cooljunit; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class TestWordDealUtilWithParam { private String expected; private String target; @Parameters public static Collection words(){ return Arrays.asList(new Object[][]{ {"employee_info", "employeeInfo"}, //測試一般的處理情況 {null, null}, //測試 null 時的處理情況 {"", ""}, //測試空字符串時的處理情況 {"employee_info", "EmployeeInfo"}, //測試當首字母大寫時的情況 {"employee_info_a", "employeeInfoA"}, //測試當尾字母為大寫時的情況 {"employee_a_info", "employeeAInfo"} //測試多個相連字母大寫時的情況 }); } /** * 參數化測試必須的構造函數 * @param expected 期望的測試結果,對應參數集中的第一個參數 * @param target 測試數據,對應參數集中的第二個參數 */ public TestWordDealUtilWithParam(String expected , String target){ this.expected = expected; this.target = target; } /** * 測試將 Java 對象名稱到數據庫名稱的轉換 */ @Test public void wordFormat4DB(){ assertEquals(expected, WordDealUtil.wordFormat4DB(target)); } }

      

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>