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

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit實施集合
作者:網絡轉載 發布時間:[ 2013/1/17 14:14:29 ] 推薦標簽:

    為此,JUnit提供了兩個方法,定義在TestCase類中。
            protected void setUp() throws java.lang.Exception        protected void tearDown() throws java.lang.Exception        覆蓋setUp()方法,初始化所有測試的Fixture(你甚至可以在setUp中建立網絡連接),將每個測試略有不同的地方在testXXX()方法中進行配置。

    覆蓋tearDown()(我總想起一首叫雨滴的吉他曲),釋放你在setUp()中分配的性資源,如數據庫連接。

    當JUnit執行測試時,它在執行每個testXXXXX()方法前都調用setUp(),而在執行每個testXXXXX()方法后都調用tearDown()方法,由此保證了測試不會相互影響。

    TestCase

    需要提醒一下,在junit.framework.Assert類中定義了相當多的assert方法,主要有assert(), assert(), assertEquals(), assertNull(), assertSame(), assertTrue(), fail()等方法。如果你需要比較自己定義的類,如Car。assert方法需要你覆蓋Object類的equals()方法,以比較兩個對象的不同。實踐表明:如果你覆蓋了Object類的equals()方法,好也覆蓋Object類的hashCode()方法。再進一步,連帶Object類的toString()方法也一并覆蓋。這樣可以使測試結果更具可讀性。

    當你設置好了Fixture后,下一步是編寫所需的testXXX()方法。一定要保證testXXX()方法的public屬性,否則無法通過內省(reflection)對該測試進行調用。

    每個擴展的TestCase類(也是你編寫的測試類)會有多個testXXX()方法。一個testXXX()方法是一個測試。要想運行這個測試,你必須定義如何運行該測試。如果你有多個testXXX()方法,你要定義多次。JUnit支持兩種運行單個測試的方法:靜態的和動態的方法。

    靜態的方法是覆蓋TestCase類的runTest()方法,一般是采用內部類的方式創建一個測試實例:         TestCase test01 = new testCar("test getWheels") {            public void runTest() {                testGetWheels();            }        }            采用靜態的方法要注意要給每個測試一個名字(這個名字可以任意起,但你肯定希望這個名字有某種意義),這樣你可以區分那個測試失敗了。

    動態的方法是用內省來實現runTest()以創建一個測試實例。這要求測試的名字是需要調用的測試方法的名字:         TestCase test01 = new testCar("testGetWheels");            JUnit會動態查找并調用指定的測試方法。動態的方法很簡潔,但如果你鍵入了錯誤的名字會得到一個令人奇怪的NoSuchMethodException異常。動態的方法和靜態的方法都很好,你可以按照自己的喜好來選擇。(先別著急選擇,后面還有一種更酷的方法等著你呢。)

    TestSuite

    一旦你創建了一些測試實例,下一步是要讓他們能一起運行。我們必須定義一個TestSuite。在JUnit中,這要求你在TestCase類中定義一個靜態的suite()方法。suite()方法像main()方法一樣,JUnit用它來執行測試。在suite()方法中,你將測試實例加到一個TestSuite對象中,并返回這個TestSuite對象。一個TestSuite對象可以運行一組測試。TestSuite和TestCase都實現了Test接口(interface),而Test接口定義了運行測試所需的方法。這允許你用TestCase和TestSuite的組合創建一個TestSuite。這是為什么我們前面說TestCase,TestSuite以及TestSuite組成了一個composite Pattern的原因。例子如下:         public static Test suite() {            TestSuite suite= new TestSuite();            suite.addTest(new testCar("testGetWheels"));            suite.addTest(new testCar("testGetSeats"));            return suite;        }            從JUnit 2.0開始,有一種更簡單的動態定義測試實例的方法。你只需將類傳遞給TestSuite,JUnit會根據測試方法名自動創建相應的測試實例。所以你的測試方法好取名為testXXX()。例子如下:         public static Test suite() {            return new TestSuite(testCar.class);        }            從JUnit的設計我們可看出,JUnit不僅可用于單元測試,也可用于集成測試。關于如何用JUnit進行集成測試請參考。

    為了兼容性的考慮,下面列出使用靜態方法的例子:         public static Test suite() {            TestSuite suite= new TestSuite();            suite.addTest(                new testCar("getWheels") {                     protected void runTest() { testGetWheels(); }                }            );                suite.addTest(                new testCar("getSeats") {                     protected void runTest() { testGetSeats(); }                }            );            return suite;                    }           
    TestRunner

    有了TestSuite我們可以運行這些測試了,JUnit提供了三種界面來運行測試         [Text  UI] junit.textui.TestRunner        [AWT   UI] junit.awtui.TestRunner        [Swing UI] junit.swingui.TestRunner            我們前面已經看過文本界面了,下面讓我們來看一看圖形界面:

 

    界面很簡單,鍵入類名-testCar。或在啟動UI的時候鍵入類名:         [Windows] d:>java junit.swingui.TestRunner testCar            [Unix] % java junit.swingui.TestRunner testCar        從圖形UI可以更好的運行測試可查單測試結果。還有一個問題需要注意:如果JUnit報告了測試沒有成功,JUnit會區分失敗(failures)和錯誤(errors)。失敗是一個期望的被assert方法檢查到的結果。而錯誤則是意外的問題引起的,如ArrayIndexOutOfBoundsException。

    由于TestRunner十分簡單,界面也比較直觀,故不多介紹。朋友們可自行參考相關資料。

6.JUnit佳實踐

Martin Fowler(又是這位高人)說過:“當你試圖打印輸出一些信息或調試一個表達式時,寫一些測試代碼來替代那些傳統的方法。”一開始,你會發現你總是要創建一些新的Fixture,而且測試似乎使你的編程速度慢了下來。然而不久之后,你會發現你重復使用相同的Fixture,而且新的測試通常只涉及添加一個新的測試方法。

你可能會寫許多測試代碼,但你很快會發現你設想出的測試只有一小部分是真正有用的。你所需要的測試是那些會失敗的測試,即那些你認為不會失敗的測試,或你認為應該失敗卻成功的測試。

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 日韩深夜 | 亚洲a在线观看 | 亚洲天堂国产精品 | 日韩短视频| 国产色手机在线观看播放 | 我要看一级大片 | 亚洲青青青网伊人精品 | 亚洲图片欧洲图片aⅴ | 国产农村一二三区 | 成人在线短视频 | 欧美国产黄色 | 亚洲色欲色欲综合网站 | 成人在线免费小视频 | 美女黄频a美女大全免费皮 美女黄免费网站 | 国产深夜福利 | 国产亚洲综合一区 柠檬导航 | a级毛片蜜桃成熟时2在线播放 | 涩涩逼 | 日本一区二区三区四区视频 | 涩涩亚洲 | 日韩在线观看不卡 | 欧洲成人免费高清视频 | 宠文肉细致高h一对一 | 在线不卡日韩 | 久久亚洲精品tv | 亚洲综合色视频 | 亚洲一区二区三区网站 | 欧美成人性视频播放 | 色综合天天综合高清网国产 | 亚洲伊人久久综合影院2021 | www.人人| 欧美性与交视频在线观看 | 免费www视频 | 男女国产一级毛片 | 久月婷婷 | 久久99精品这里精品动漫6 | 国产一区二区三区在线影院 | 亚洲精品线在线观看 | 午夜高清免费在线观看 | 亚洲国产成人久久 | 1314亚洲人成网站在线观看 |