日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Eclipse中使用JUnit4进行单元测试(中级篇)

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Eclipse中使用JUnit4进行单元测试(中级篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉自:http://blog.csdn.net/andycpp/article/details/1327346

我們繼續對初級篇中的例子進行分析。初級篇中我們使用Eclipse自動生成了一個測試框架,在這篇文章中,我們來仔細分析一下這個測試框架中的每一個細節,知其然更要知其所以然,才能更加熟練地應用JUnit4。

一、?????包含必要地Package

在測試類中用到了JUnit4框架,自然要把相應地Package包含進來。最主要地一個Package就是org.junit.*。把它包含進來之后,絕大部分功能就有了。還有一句話也非常地重要“import static org.junit.Assert.*;”,我們在測試的時候使用的一系列assertEquals方法就來自這個包。大家注意一下,這是一個靜態包含(static),是JDK5中新增添的一個功能。也就是說,assertEquals是Assert類中的一系列的靜態方法,一般的使用方式是Assert. assertEquals(),但是使用了靜態包含后,前面的類名就可以省略了,使用起來更加的方便。

二、?????測試類的聲明

大家注意到,我們的測試類是一個獨立的類,沒有任何父類。測試類的名字也可以任意命名,沒有任何局限性。所以我們不能通過類的聲明來判斷它是不是一個測試類,它與普通類的區別在于它內部的方法的聲明,我們接著會講到。

三、?????創建一個待測試的對象。

你要測試哪個類,那么你首先就要創建一個該類的對象。正如上一篇文章中的代碼:

?

private?static?Calculator?calculator?=?new?Calculator();

?

?

為了測試Calculator類,我們必須創建一個calculator對象。

四、?????測試方法的聲明

在測試類中,并不是每一個方法都是用于測試的,你必須使用“標注”來明確表明哪些是測試方法。“標注”也是JDK5的一個新特性,用在此處非常恰當。我們可以看到,在某些方法的前有@Before、@Test、@Ignore等字樣,這些就是標注,以一個“@”作為開頭。這些標注都是JUnit4自定義的,熟練掌握這些標注的含義非常重要。

五、?????編寫一個簡單的測試方法。

首先,你要在方法的前面使用@Test標注,以表明這是一個測試方法。對于方法的聲明也有如下要求:名字可以隨便取,沒有任何限制,但是返回值必須為void,而且不能有任何參數。如果違反這些規定,會在運行時拋出一個異常。至于方法內該寫些什么,那就要看你需要測試些什么了。比如:

?

@Test

????public?void?testAdd()?{

??????????calculator.add(2);

??????????calculator.add(3);

??????????assertEquals(5,?calculator.getResult());

????}

?

我們想測試一下“加法”功能時候正確,就在測試方法中調用幾次add函數,初始值為0,先加2,再加3,我們期待的結果應該是5。如果最終實際結果也是5,則說明add方法是正確的,反之說明它是錯的。assertEquals(5, calculator.getResult());就是來判斷期待結果和實際結果是否相等,第一個參數填寫期待結果,第二個參數填寫實際結果,也就是通過計算得到的結果。這樣寫好之后,JUnit會自動進行測試并把測試結果反饋給用戶。

六、?????忽略測試某些尚未完成的方法。

如果你在寫程序前做了很好的規劃,那么哪些方法是什么功能都應該實現定下來。因此,即使該方法尚未完成,他的具體功能也是確定的,這也就意味著你可以為他編寫測試用例。但是,如果你已經把該方法的測試用例寫完,但該方法尚未完成,那么測試的時候一定是“失敗”。這種失敗和真正的失敗是有區別的,因此JUnit提供了一種方法來區別他們,那就是在這種測試函數的前面加上@Ignore標注,這個標注的含義就是“某些方法尚未完成,暫不參與此次測試”。這樣的話測試結果就會提示你有幾個測試被忽略,而不是失敗。一旦你完成了相應函數,只需要把@Ignore標注刪去,就可以進行正常的測試。

七、?????Fixture(暫且翻譯為“固定代碼段”)

Fixture的含義就是“在某些階段必然被調用的代碼”。比如我們上面的測試,由于只聲明了一個Calculator對象,他的初始值是0,但是測試完加法操作后,他的值就不是0了;接下來測試減法操作,就必然要考慮上次加法操作的結果。這絕對是一個很糟糕的設計!我們非常希望每一個測試都是獨立的,相互之間沒有任何耦合度。因此,我們就很有必要在執行每一個測試之前,對Calculator對象進行一個“復原”操作,以消除其他測試造成的影響。因此,“在任何一個測試執行之前必須執行的代碼”就是一個Fixture,我們用@Before來標注它,如前面例子所示:

?

@Before

??????public?void?setUp()?throws?Exception?{

???????????calculator.clear();

??????}

?

這里不在需要@Test標注,因為這不是一個test,而是一個Fixture。同理,如果“在任何測試執行之后需要進行的收尾工作”也是一個Fixture,使用@After來標注。由于本例比較簡單,沒有用到此功能。

??????? JUnit4的一些基本知識就介紹到此,還有一些更靈活的用法放在本系列的高級篇中給大家介紹!

總結

以上是生活随笔為你收集整理的在Eclipse中使用JUnit4进行单元测试(中级篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 根深蒂固在线观看 | 午夜影剧院 | 色婷婷国产精品综合在线观看 | 国产在线精 | 欧美xxxx性xxxxx高清 | 久久亚洲av成人无码国产电影 | 不卡中文字幕在线观看 | 天天插日日干 | 无码任你躁久久久久久老妇 | 夜夜爽夜夜叫夜夜高潮漏水 | 最新地址av | 熊猫成人网 | 青草国产视频 | 99久久人妻无码中文字幕系列 | 一本毛片| avav我爱av| 日本黄色大片免费 | 久久久久99精品成人片直播 | 国产精品入口a级 | 日韩中文字幕在线观看视频 | 最近的中文字幕 | 精品动漫一区二区三区的观看方式 | 成人免费在线视频观看 | 综合色吧 | 国产精品自拍99 | 日韩精品视频久久 | 欧美极品jizzhd欧美仙踪林 | 超碰国产91 | 午夜影院在线视频 | 欧美一区二区精品 | 国产精品久久综合视频 | 超能一家人电影免费喜剧在线观看 | 青青伊人影院 | 欧美激情电影一区二区 | 青青99| 欧美日日 | 国产嫩草av| 亚洲欧美日韩第一页 | 久久久久久久福利 | 热久久伊人 | 一区在线观看 | 日韩精品中文字幕在线 | 日本做受 | 国产成人在线影院 | 久色在线 | 亚洲a黄 | 国产视频a | 精品视频中文字幕 | 尤物网站在线 | 97超碰人 | 毛片在线看网站 | 丁香美女社区 | 伊人色av | 国产中文字幕一区二区 | 好看的中文字幕av | 国产福利在线导航 | 成年人国产精品 | 在线不卡免费av | 国产色影院| 亚洲精品视频久久 | 狠狠躁18三区二区一区视频 | 午夜精品久久久久久久久久久久久 | 欧美日韩综合一区二区三区 | 久久av影院 | 烈性摔跤 | 日本在线一区 | 日韩一级黄色片 | 色先锋av资源 | 在线观看成人免费 | 青青青免费在线视频 | 日日操网站 | 午夜视频在线观看一区 | 99re99| 521av在线| 91成人精品一区在线播放 | 色小说综合 | 久久中文字幕人妻熟av女蜜柚m | 日韩精品激情 | 日本三级吃奶头添泬 | 成年人视频免费 | 性高潮免费视频 | 三级特黄 | 少妇久久久久久被弄到高潮 | 欧美cccc极品丰满hd | 艳妇乳肉亭妇荡乳av | 国产精品久久av无码一区二区 | 国产三级中文字幕 | 亚洲中文字幕视频一区 | 国产剧情一区二区三区 | 国产精品正在播放 | 91 免费看片 | 男人喷出精子视频 | 性久久久久 | 国产综合av| 小箩莉末发育娇小性色xxxx | 欧美一级爱爱视频 | 国产成人av片 | 黄色a级片网站 | 国产精品50页 |