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

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit測試教程
作者:網絡轉載 發布時間:[ 2013/8/26 14:42:48 ] 推薦標簽:

安裝
首先你要獲取JUnit的軟件包,從JUnit下載新的軟件包(截至寫作本文時,JUnit的新版本是3.7)。將其在適當的目錄下解包。這樣在安裝目錄(也是你所選擇的解包的目錄)下你找到一個名為junit.jar的文件。將這個jar文件加入你的CLASSPATH系統變量。(IDE的設置會有所不同,參看你所喜愛的IDE的配置指南)JUnit安裝完了。太easy了!
你一旦安裝完JUnit,有可能想試試我們的Car和testCar類,沒問題,我已經運行過了,你得到的結果應該和我列出的結果類似。(以防新版JUnit使我的文章過時)
接下來,你可能會先寫測試代碼,再寫工作代碼,或者相反,先寫工作代碼,再寫測試代碼。我更贊成使用前一種方法:先寫測試代碼,再寫工作代碼。因為這樣可以使我們編寫工作代碼時清晰地了解工作類的行為。
要注意編寫一定能通過的測試代碼(如文中的例子)并沒有任何意義,只有測試代碼能幫助我們發現bug,測試代碼才有其價值。此外測試代碼還應該對工作代碼進行全面的測試。如給方法調用的參數傳入空值、錯誤值和正確的值,看看方法的行為是否如你所期望的那樣。
你現在已經知道了編寫測試類的基本步驟:
1>擴展TestCase類;
2>覆蓋runTest()方法(可選);
3>寫一些testXXXXX()方法;

Fixture
解下來的問題是,如果你要對一個或若干個的類執行多個測試,該怎么辦?JUnit對此有特殊的解決辦法。
如果需要在一個或若干個的類執行多個測試,這些類成為了測試的context。在JUnit中被稱為Fixture(如testCar類中的 myCar 和 expectedWheels )。當你編寫測試代碼時,你會發現你花費了很多時間配置/初始化相關測試的Fixture。將配置Fixture的代碼放入測試類的構造方法中并不可取,因為我們要求執行多個測試,我并不希望某個測試的結果意外地(如果這是你要求的,那另當別論了)影響其他測試的結果。通常若干個測試會使用相同的Fixture,而每個測試又各有自己需要改變的地方。
為此,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.work.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異常。動態的方法和靜態的方法都很好,你可以按照自己的喜好來選擇。(先別著急選擇,后面還有一種更酷的方法等著你呢。)

上一頁123456下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 色好吊 | 麻豆一区二区大豆行情 | 最近中文字幕无吗 | baoyu166.永久免费视频 | 欧美综合中文字幕久久 | 在线精品欧美 | 精品国产高清自在线一区二区三区 | 五月婷香| 视频在线你懂的 | 狠狠色丁香九九婷婷综合五月 | 亚洲欧美日韩精品一区 | 成人网中文字幕色 | 中文有码视频 | 成人免费福利网站在线看 | 天天干天天干天天干 | 日韩精品高清自在线 | 日老逼视频 | 一个人看www在线高清免费看 | 91短视频在线观看免费 | 国产偷久久 | 天天射美女 | 日韩国产成人精品视频 | 97国产成人精品免费视频 | 久久国产香蕉视频 | 曰批视频免费 | 玖玖在线播放 | vvideos欧美极度另类 | 久久国产高清波多野结衣 | 国产精品日日摸夜夜添夜夜添1 | 久久国产精品成人免费 | 日韩中文字幕一区二区不卡 | 黄色大毛片 | 最近中文字幕无吗 | 黄色一级大片免费看 | 国自产拍91大神精品 | 日韩精品一区二区三区毛片 | 色偷偷91久久综合噜噜噜噜 | 深夜福利网站在线 | 在线欧美成人 | 在线免费观看黄网站 | 天天成人|