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

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
循序漸進學習JUnit
作者:網絡轉載 發布時間:[ 2012/11/29 14:45:03 ] 推薦標簽:

測試方法的主體通過驗證assertion(斷言)對被測方法進行詢問。例如,在toString()實施的測試方法中,你希望確認該方法已經對時間的設定進行了很好的說明(對于UNIX系統來說,初問世的時間為1970年1月1日的午夜)。要實施assertion,你可以使用Junit框架提供的assertion方法。這些方法在該框架的junit.framework.Assert類中被實施,并且可以在你的測試中被訪問,這是因為Assert是TestCase的父類。這些方法可與Java中的關鍵字assert(是在J2EE 1.4中新出現的)相比。一些assertion方法可以檢查原始類型(如布爾型、整型等)之間或對象之間是否相等(利用equals()方法檢查兩個對象是否相等)。其他assertion方法檢查兩個對象是否相同、一個對象是否為"空"或"非空",以及一個布爾值(通常由一個表達式生成)是"真"還是"假"。在表 1中對這些方法進行了總結。

對于那些采用浮點類型或雙精度類型參數的assertion,存在一個第三種方法,即采用一個delta值作為參數進行比較。另外還要注意,assertEquals()和assertSame()方法一般不會產生相同的結果。(兩個具有相同值的字符串可以不相同,因為它們是兩個具有不同內存地址的不同對象。)因此,assertEquals()將會驗證assertion的有效性,而assertSame()則不會。注意,對于表 1 中的每個assertion方法,你還有一種選擇,是引入另一個參數,如果assertion失敗,該參數會給出一條解釋性消息。例如,assertEquals(int 期望值, int 實際值)可以與一個諸如assertEquals(字符串消息,int期望值,int實際值)的消息一起使用。

當一個assertion失敗時,該assertion方法會拋出一個AssertFailedError或ComparisonFailure。AssertionFailedError由java.lang.Error繼承而來,因此你不必在測試方法的throws語句中對其進行聲明。而ComparisonFailure由AssertionFailedError繼承而來,因此你也不必對其進行聲明。因為當一個assertion失敗時會在測試方法中拋出一個錯誤,所以后面的assertion將不會繼續運行。框架捕捉到這些錯誤并認定該測試已經失敗后,會打印出一條說明錯誤的消息。這個消息由assertion生成,并且被傳遞到assertion方法(如果有的話)。

現在將下面一行語句添加到testIsoDate()方法的末尾:

assertEquals("This is a test",1,2);
 

現在編譯并運行測試:

$ javac *.java
$ java junit.textui.TestRunner IsoDateTest
.F.
Time: 0,348
There was 1 failure:
1) testIsoDate(IsoDateTest)junit.framework
.AssertionFailedError: This is a test expected:<1> but was:<2>
      at IsoDateTest.testIsoDate
      (IsoDateTest.java:29)

FAILURES!!!
Tests run: 2,  Failures: 1,  Errors: 0
 

JUnit為每個已處理的測試打印一個點,顯示字母"F"來表示失敗,并在assertion失敗時顯示一條消息。此消息由你發送到assertion方法的注釋和assertion的結果組成(自動生成)。從這里可以看出assertion方法的參數順序對于生成的消息非常重要。第一個參數是期望值,而第二個參數則是實際值。

如果在測試方法中出現了某種錯誤(例如,拋出了一個異常),該工具會將其顯示為一個錯誤(而不是由assertion失敗而產生的一個"失敗")。現在對IsoDateTest類進行修改,以將前面增加的一行語句用以下語句代替:

throw new Exception("This is a test");
 

然后編譯并運行測試:

$ javac *.java
$ java junit.textui.TestRunner IsoDateTest
.E.
Time: 0,284
There was 1 error:
1) testIsoDate(IsoDateTest)java.lang.
   Exception: This is a test at IsoDate
   Test.testIsoDate(IsoDateTest.java:30)

FAILURES!!!
Tests run: 2,  Failures: 0,  Errors: 1
 

該工具將該異常顯示為一個錯誤。因此,一個錯誤表示一個錯誤的測試方法,而不是表示一個錯誤的測試實施。

Assert類還包括一個fail()方法(該版本帶有解釋性消息),該方法將通過拋出AssertionFailedError來中斷正在運行的測試。當你希望一個測試失敗而不會調用一個判定方法時,fail()方法是非常有用的。例如,如果一段代碼應當拋出一個異常而未拋出,那么可以調用fail()方法使該測試失敗,方法如下:

public void testIndexOutOfBounds() {
  try {
       ArrayList list=new ArrayList();
       list.get(0);
       fail("IndexOutOfBoundsException  
           not thrown");
  } catch(IndexOutOfBoundsException e) {}
}
 

上一頁12345下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 一二三四视频社区在线播放中国 | 国产精品免费一区二区区 | 日皮视频在线免费观看 | 精品欧美一区二区三区精品久久 | 午夜叉 | 亚洲欧洲日产国码 最新 | 欧美综合区自拍亚洲综合天堂 | 亚洲五月六月丁香激情 | 岛国在线播放v片免费 | 亚洲欧美精品日韩欧美 | 大杳蕉伊人狼人久久一本线 | 欧美成人性生活视频 | 日本xxx在线播放 | 黄色a免费| 欧美国产高清 | 国产亚洲高清不卡在线观看 | 成人欧美一区二区三区黑人免费 | 女人牲交视频一级毛片 | 韩国 欧美 日产 国产精品 | 欧美日韩精品乱国产 | 日韩欧美在线看 | www永久免费视频 | 国产精品欧美日韩一区二区 | 欧美色图在线观看 | 国产成人免费永久播放视频平台 | 你懂的在线播放 | 亚洲一本视频 | 小明免费看视频 | 亚洲一区二区三区免费观看 | 精品久久天干天天天按摩 | 俄罗斯高清freexxxx性 | 欧美一区二区视频三区 | 亚洲综合一二三区 | 最近更新中文字幕2019视频 | 欧美性free极品另类 | 日日噜噜夜夜狠狠视频欧美人 | 一级毛毛片毛片毛片毛片在线看 | 制服丝袜国产在线 | 国产成a人片在线观看视频99 | 日本videos高清hd | 免费视频精品 |