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

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

如果你立即動手寫了上面的代碼,你會發現兩個問題,第一,如果你要執行測試的類testCar,你必須必須手工敲入如下命令:
[Windows] d:>java testCar
[Unix] % java testCar
即便測試如例示的那樣簡單,你也有可能不愿在每次測試的時候都敲入上面的命令,而希望在某個集成環境中(IDE)點擊一下鼠標能執行測試。后面的章節會介紹到這些問題。第二,如果沒有一定的規范,測試類的編寫將會成為另一個需要定義的標準。沒有人希望查看別人是如何設計測試類的。如果每個人都有不同的設計測試類的方法,光維護被測試的類夠煩了,誰還顧得上維護測試類?另外有一點我不想提,但是這個問題太明顯了,測試類的代碼多于被測試的類!這是否意味這雙倍的工作?不!1)不論被測試類-Car 的 getWheels 方法如何復雜,測試類-testCar 的testGetWheels 方法只會保持一樣的代碼量。2)提高軟件的質量并解決軟件熵這一問題并不是沒有代價的。testCar是代價。
我們目前所能做的是盡量降低所付出的代價:我們編寫的測試代碼要能被維護人員容易的讀取,我們編寫測試代碼要有一定的規范。好IDE工具可以支持這些規范。 好了,你所需要的是JUnit。一個Open Source的項目。用其主頁上的話來說是:“JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing work)。用于Java開發人員編寫單元測試之用。”所謂框架是 Erich Gamma 和 Kent Beck 定下了一些條條框框,你編寫的測試代碼必須遵循這個條條框框:繼承某個類,實現某個接口。其實也是我們前面所說的規范。好在JUnit目前得到了大多數軟件工程師的認可。遵循JUnit我們會得到很多的支持。回歸測試是你不斷地對所編寫的代碼進行測試:編寫一些,測試一些,調試一些,然后循環這一過程,你會不斷地重復先前的測試,哪怕你正編寫其他的類,由于軟件熵的存在,你可能在編寫第五個類的時候發現,第五個類的某個操作會導致第二個類的測試失敗。通過回歸測試我們抓住了這條大Bug。

回歸測試框架-JUnit
通過前面的介紹,我們對JUnit有了一個大概的輪廓。知道了它是干什么的。現在讓我們動手改寫上面的測試類testCar使其符合Junit的規范--能在JUnit中運行。
//執行測試的類(JUnit版)
import junit.work.*;
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.work.Assert中所定義的方法,junit.work.TestCase繼承了junit.work.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

上一頁123456下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美亚洲欧美区 | 国产精品亚洲欧美日韩一区在线 | 高清不卡一区二区 | 精品区| 美国黄色毛片一级 | 黄色网在线免费观看 | 高清一级做a爱过程免费视频 | 亚洲区精品久久一区二区三区 | 91av成年影院在线播放 | 色网在线免费观看 | 国产一区二区中文字幕 | 日韩国产成人精品视频人 | 欧美大陆日韩一区二区三区 | 日韩精品亚洲精品485页 | 成人免费观看高清在线毛片 | 欧美人成网站在线看 | 欧美色图图 | 99热在线免费观看 | 影音先锋最新资源网 | 日本黄色mv | 国产一区二区三区精品视频 | 天天干天天拍天天射 | 一本大道香蕉高清视频在线 | 91精品国产免费久久国语蜜臀 | 亚洲一区二区高清 | 亚洲成熟中老妇女 | 又黄又爽一线毛片免费观看 | 日韩一区在线播放 | 久久九九有精品国产56 | 男女视频在线观看 | 成人黄色免费网址 | 日韩伦理视频在线观看 | 狠狠干成人| 亚洲一区在线视频观看 | 在线日韩三级 | 日本色片网站 | 曰批全过程免费动态图 | 中文字幕手机在线视频 | a级毛片蜜桃成熟时2在线播放 | 国产大片在线观看 | 中文字幕精品在线视频 |