亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-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
主站蜘蛛池模板: 2020国产精品永久在线观看 | 中国一级毛片特级毛片 | 深夜释放自己糖心vlog | 最近的中文字幕大全免费8 最近的中文字幕2019更新 | 一级看片免费视频 | 午夜看大片 | 国产小视频在线观看www | 青青在线视频 | aaa一级毛片 | 成人欧美一区二区三区黑人 | 一级一级 a爱片免费视频 | 小明爱看看永久成人免费平台 | 视频精品一区二区三区 | 中文字幕欧美日韩在线不卡 | 狠狠色狠狠色很很综合很久久 | 欧美成人午夜精品一区二区 | 久久人人爱 | 在线观看国产高清免费不卡黄 | 日韩一区二区三区在线 | 丝袜网站在线观看 | 九九99在线视频 | 91精品国产亚一区二区三区 | 成人黄色在线视频 | 欧美极品欧美精品欧美视频 | 韩国2023理伦片免费观看 | 波多野结衣在线不卡 | 成人毛片免费观看视频 | 色狠狠网 | 一个b两个40分麻豆 一个色亚洲 | 香蕉视频97 | 日日干天天 | 精品久久久久久中文 | 91福利一区二区在线观看 | 亚洲精品高清国产麻豆专区 | 看片亚洲| 国产成人一区二区三中文 | 天天激情综合 | 欧美一级高清视频在线播放 | 三级全黄的视频 | 欧美一级鲁丝片免费看 | 国产成人99精品免费观看 |