亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
探索JUnit 4.4特性
作者:網絡轉載 發布時間:[ 2013/3/12 16:00:38 ] 推薦標簽:

    如何使用理論機制

    在 JUnit 4.4 的理論機制中,每個測試方法不再是由注釋 @Test 指定的無參測試函數,而是由注釋 @Theory 指定的帶參數的測試函數,這些參數來自一個數據集(data sets),數據集通過注釋 @DataPoint 指定。

    JUnit 4.4 會自動將數據集中定義的數據類型和理論測試方法定義的參數類型進行比較,如果類型相同,會將數據集中的數據通過參數一一傳入到測試方法中。數據集中的每一個數據都會被傳入到每個相同類型的參數中。這時有人會問了,如果參數有多個,而且類型都和數據集中定義的數據相同,怎么辦?答案是,JUnit 4.4 會將這些數據集中的數據進行一一配對組合(所有的組合情況都會被考慮到),然后將這些數據組合統統通過參數,一一傳入到理論的測試方法中,但是用戶可以通過假設機制(assumption)在斷言函數(assertion)執行這些參數之前,對這些通過參數傳進來的數據集中的數據進行限制和過濾,達到有目的地部分地將自己想要的參數傳給斷言函數(assertion)來測試。只有滿足所有假設的數據才會執行接下來的測試用例,任何一個假設不滿足的數據,都會自動跳過該理論測試函數(假設 assumption 不滿足的數據會被忽略,不再執行接下來的斷言測試),如果所有的假設都滿足,測試用例斷言函數不通過才代表著該理論測試不通過。

    清單 13 理論機制舉例

import static org.hamcrest.Matchers.*; //指定接下來要使用的Matcher匹配符
import static org.junit.Assume.*; //指定需要使用假設assume*來輔助理論Theory
import static org.junit.Assert.*; //指定需要使用斷言assert*來判斷測試是否通過

import org.junit.experimental.theories.DataPoint; //需要使用注釋@DataPoint來指定數據集
import org.junit.experimental.theories.Theories; //接下來@RunWith要指定Theories.class
import org.junit.experimental.theories.Theory; //注釋@Theory指定理論的測試函數
import org.junit.runner.RunWith; //需要使用@RunWith指定接下來運行測試的類

import org.junit.Test;

//注意:必須得使用@RunWith指定Theories.class
@RunWith(Theories.class)
public class TheoryTest {

    //利用注釋@DataPoint來指定一組數據集,這些數據集中的數據用來證明或反駁接下來定義的Theory理論,
    //testNames1和testNames2這兩個理論Theory測試函數的參數都是String,所以Junit4.4會將這5個
    //@DataPoint定義的String進行兩兩組合,統統一一傳入到testNames1和testNames2中,所以參數名year
    //和name是不起任何作用的,"2007"同樣有機會會傳給參數name,"Works"也同樣有機會傳給參數year
    @DataPoint public static String YEAR_2007 = "2007";
    @DataPoint public static String YEAR_2008 = "2008";
    @DataPoint public static String NAME1 = "developer";
    @DataPoint public static String NAME2 = "Works";
    @DataPoint public static String NAME3 = "developerWorks";

    //注意:使用@Theory來指定測試函數,而不是@Test
    @Theory
    public void testNames1( String year, String name ) {
        assumeThat( year, is("2007") ); //year必須是"2007",否則跳過該測試函數
        System.out.println( year + "-" + name );
        assertThat( year, is("2007") ); //這里的斷言語句沒有實際意義,這里舉此例只是為了不中斷測試
    }

    //注意:使用@Theory來指定測試函數,而不是@Test
    @Theory
    public void testNames2( String year, String name ) {
        assumeThat(year, is("2007")); //year必須是"2007",否則跳過該測試函數
        //name必須既不是"2007"也不是"2008",否則跳過該測試函數
        assumeThat(name, allOf( not(is("2007")), not(is("2008"))));
        System.out.println( year + "-" + name );
        assertThat( year, is("2007") ); //這里的斷言語句沒有實際意義,這里舉此例只是為了不中斷測試
    }


結果輸出:
第一個Theory打印出:
2007-2007
2007-2008
2007-developer
2007-Works
2007-developerWorks
第二個Theory打印出:
2007-developer
2007-Works
2007-developerWorks

    結束語

    本文通過詳細深入的理論介紹和簡單易懂的實例全面剖析了 JUnit 4.4 的三個新特性:

    提供了新的斷言語法(assertion syntax)——assertThat提供了假設機制(assumptions)

    提供了理論機制(Theories)

    相信讀者看完后一定會對 JUnit 4.4 有著非常深入的了解并可以輕松將其運用到自己的開發工程中。 

上一頁1234567下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 色综合区| 成人综合在线视频免费观看 | 一级一黄在线观看视频免费 | 欧美超级碰碰 | 国内最真实的xxxx人伦 | 2020国产大片天天看 | 成人午夜影院在线观看 | 亚洲视频99| 伊人网综合视频 | 夜色香影院| 青青青久热国产精品视频 | 日韩精品一区二区三区高清 | 美女很黄很黄是免费的 | 最近2019中文字幕免费看最新 | 久久国产精品广西柳州门 | 日本福利片在线观看 | 激情五月婷婷开心 | 黄色片免费观看 | 天天摸天天添 | 丝袜美脚在线 | 亚洲三级视频在线观看 | 日日噜噜夜夜狠狠va视频 | 六月丁香在线观看 | 欧美一级免费 | 成人激情视频 | 在线 色| 国产成年人在线观看 | 国产麻豆福利a v在线播放 | 日韩手机在线 | 亚洲最大成人在线 | 成人精品一区二区三区 | 日本欧美视频在线 | 中文字幕精品一区二区日本 | 欧美黄色大片免费 | 2022日韩理论片在线观看 | 黄色一级毛片看一级毛片 | 中文无码日韩欧 | 一级黄色a视频 | 久久成人网18网站 | 亚洲欧美日韩在线2020 | 久久精品国产精品青草不卡 |