• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        JUnit實施--2.回歸測試框架-JUnit

        JUnit實施--2.回歸測試框架-JUnit

        更新時間:2022-05-16 文章作者:未知 信息來源:網絡 閱讀次數:

        2.回歸測試框架-JUnit
        通過前面的介紹,我們對JUnit有了一個大概的輪廓。知道了它是干什么的。現在讓我們動手改寫上面的測試類testCar使其符合Junit的規范--能在JUnit中運行。

        //執行測試的類(JUnit版)import junit.framework.*;public class testCar extends TestCase {protected int expectedWheels;protected Car myCar;public testCar(String name) {super(name);}protected void setUp() {expectedWheels = 4;myCar = new Car();}public static Test suite() {/* * the type safe way *TestSuite suite= new TestSuite();suite.addTest(new testCar("Car.getWheels") { protected void runTest() { testGetWheels(); }});return suite;*//* * the dynamic way */return new TestSuite(testCar.class);}public void testGetWheels() {assertEquals(expectedWheels, myCar.getWheels());}}
        改版后的testCar已經面目全非。先讓我們了解這些改動都是什么含義,再看如何執行這個測試。

        1>import語句,引入JUnit的類。(沒問題吧)

        2>繼承 TestCase 。可以暫時將一個TestCase看作是對某個類進行測試的方法的集合。詳細介紹請參看JUnit資料

        3>setUp()設定了進行初始化的任務。我們以后會看到setUp會有特別的用處。

        4>testGetWheeels()對預期的值和myCar.getWheels()返回的值進行比較,并打印比較的結果。assertEquals是junit.framework.Assert中所定義的方法,junit.framework.TestCase繼承了junit.framework.Assert。

        5>suite()是一個很特殊的靜態方法。JUnit的TestRunner會調用suite方法來確定有多少個測試可以執行。上面的例子顯示了兩種方法:靜態的方法是構造一個內部類,并利用構造函數給該測試命名(test name, 如 Car.getWheels ),其覆蓋的runTest()方法,指明了該測試需要執行那些方法--testGetWheels()。動態的方法是利用內省(reflection )來實現runTest(),找出需要執行那些測試。此時測試的名字即是測試方法(test method,如testGetWheels)的名字。JUnit會自動找出并調用該類的測試方法。

        6>將TestSuite看作是包裹測試的一個容器。如果將測試比作葉子節點的話,TestSuite就是分支節點。實際上TestCase,TestSuite以及TestSuite組成了一個composite Pattern。 JUnit的文檔中有一篇專門講解如何使用Pattern構造Junit框架。有興趣的朋友可以查看JUnit資料

        如何運行該測試呢?手工的方法是鍵入如下命令:
        [Windows] d:>java junit.textui.TestRunner testCar[Unix] % java junit.textui.TestRunner testCar
        別擔心你要敲的字符量,以后在IDE中,只要點幾下鼠標就成了。運行結果應該如下所示,表明執行了一個測試,并通過了測試:
        .Time: 0OK (1 tests)
        如果我們將Car.getWheels()中返回的的值修改為3,模擬出錯的情形,則會得到如下結果:
        .FTime: 0There was 1 failure:1) testGetWheels(testCar)junit.framework.AssertionFailedError: expected:<4> but was:<3>at testCar.testGetWheels(testCar.java:37)FAILURES!!!Tests run: 1,Failures: 1,Errors: 0
        注意:Time上的小點表示測試個數,如果測試通過則顯示OK。否則在小點的后邊標上F,表示該測試失敗。注意,在模擬出錯的測試中,我們會得到詳細的測試報告“expected:<4> but was:<3>”,這足以告訴我們問題發生在何處。下面就是你調試,測試,調試,測試...的過程,直至得到期望的結果。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 国产白丝无码免费视频| 国内精品99亚洲免费高清| 日本在线高清免费爱做网站| 亚洲国产精品不卡在线电影| 日批视频网址免费观看| 亚洲综合图色40p| 国产自国产自愉自愉免费24区| 亚洲色大成网站WWW久久九九| 黄色网页在线免费观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚欧乱色国产精品免费视频| 亚洲日本中文字幕天堂网| 成人无码精品1区2区3区免费看| 亚洲欧洲日产国码av系列天堂| 中文字幕视频在线免费观看| 亚洲αv在线精品糸列| 99re在线免费视频| 亚洲国产激情在线一区| 成人永久福利免费观看| 精品多毛少妇人妻AV免费久久| 亚洲国产精品一区二区成人片国内| 人妻丰满熟妇无码区免费| 亚洲毛片一级带毛片基地| 在线观看免费宅男视频| 特级毛片全部免费播放a一级| 一本色道久久综合亚洲精品高清| g0g0人体全免费高清大胆视频| 亚洲国产精品无码久久久秋霞2| 亚洲一级毛片免费看| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲国产精品一区二区九九| 成人免费区一区二区三区| 亚洲人成电影在线观看网| 免费夜色污私人影院在线观看| 无码人妻久久一区二区三区免费 | 亚洲国产精品专区在线观看| 91国内免费在线视频| 亚洲国产日韩女人aaaaaa毛片在线| 在线免费观看国产视频| 中文字幕永久免费| 亚洲国产区男人本色在线观看|