精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

單元測試第三彈——使用JUnit進行單元測試

開發 開發工具
JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。

上一彈中介紹了單元測試以及單元測試框架,這一彈主要來介紹一下JUnit這個目前比較流行的單測框架。

JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。

現在很多IDE中都已經集成了JUnit,當我們在創建maven項目的時候,一般在pom文件中也會自動增加junit的依賴。

  1. <dependency> 
  2.     <groupId>junit</groupId> 
  3.     <artifactId>junit</artifactId> 
  4.     <scope>test</scope> 
  5.     <version>4.4</version> 
  6. </dependency> 

注意上面的maven的依賴中的scope,因為junit只在測試代碼中會被用到,這里scope指定未test即可。我們直接使用和介紹JUnit4。

上手JUnit

要測試,要先有被測代碼(當然,基于測試編程可以先有測試代碼)。先來看我們想要測試的代碼:

  1. public class CaculateService { 
  2.     public float divide(float divisor, float dividend) { 
  3.         return divisor / dividend; 
  4.     } 

我們想要測試這個類,那么如何使用Junit進行測試呢?先來寫一個測試類。如果你使用的是IntelliJ+Mac,那么可以在類名上使用快捷鍵option+enter直接生成測試類,這樣IDE會幫忙生成一個對應的測試類。(其他操作系統和IDE也有同樣的功能)

生成后的測試代碼和被測代碼所處路徑如下:

可以看到,一般的maven項目中,會在src/main下面有兩個目錄,java和test,java目錄中放的是源碼,test目錄中放的是測試代碼。測試代碼和測試代碼的包名保持一致即可。

測試代碼如下:

  1. public class CaculateServiceTest { 
  2.     CaculateService caculateService = new CaculateService(); 
  3.     @Test 
  4.     public void testDivide() throws Exception { 
  5.        Assert.assertEquals(caculateService.divide(2, 1), 2.0); 
  6.     } 
  7.  

然后執行該方法就可以了,先不管Assert.assertEquals的用法及結果,這里總結下使用JUnit寫測試代碼的簡單步驟:

  • 創建一個名為 CaculateServiceTest.java 的測試類。
  • 向測試類中添加名為 testDivide() 的方法。
  • 向方法中添加 Annotaion @Test。
  • 執行測試條件并且應用 Junit 的 assertEquals API 來檢查。

JUnit中的Assert

  1. public class Assert extends java.lang.Object 
  • 這個類提供了一系列的編寫測試的有用的聲明方法。只有失敗的聲明方法才會被記錄。
  1. void assertEquals(boolean expected, boolean actual) 
  • 檢查兩個變量或者等式是否平衡
  1. void assertFalse(boolean condition) 
  • 檢查條件是假的
  1. void assertNotNull(Object object) 
  • 檢查對象不是空的
  1. void assertNull(Object object) 
  • 檢查對象是空的
  1. void assertTrue(boolean condition) 
  • 檢查條件為真
  1. void fail() 
  • 在沒有報告的情況下使測試不通過

這些方法我就不一一介紹了,相信我的讀者們都能看懂并在平時開發中用的到,還是比較容易理解的。

Assert可以用來判斷方法的真是結果和預期結果是否一樣。是我們在寫單元測試中用到最多的一個api。

JUnit中的注解

  • @BeforeClass:針對所有測試,只執行一次,且必須為static void
  • @Before:初始化方法
  • @Test:測試方法,在這里可以測試期望異常和超時時間
  • @After:釋放資源
  • @AfterClass:針對所有測試,只執行一次,且必須為static void
  • @Ignore:忽略的測試方法

一個單元測試類執行順序為:

@BeforeClass –> @Before –> @Test –> @After –> @AfterClass

每一個測試方法的調用順序為:

@Before –> @Test –> @After

時間測試

如果一個測試用例比起指定的毫秒數花費了更多的時間,那么 Junit 將自動將它標記為失敗。timeout 參數和 @Test 注釋一起使用。現在讓我們看看活動中的 @test(timeout)。

  1. @Test(timeout = 1000)  
  2. public void testTimeoutSuccess() {  
  3. // do nothing  

異常測試

你可以測試代碼是否它拋出了想要得到的異常。expected 參數和 @Test 注釋一起使用。現在讓我們看看活動中的 @Test(expected)。

  1. @Test(expected = NullPointerException.class)  
  2. public void testException() {  
  3. throw new NullPointerException();  

所有測試代碼

  1. package com.hollischuang.effective.unitest.service; 
  2.  
  3. import org.junit.*; 
  4.  
  5. /** 
  6.  * @author Hollis 17/1/7. 
  7.  */ 
  8. public class JUnitTest { 
  9.  
  10.     /** 
  11.      * 只執行一次,在整個類執行之前執行 
  12.      */ 
  13.     @BeforeClass 
  14.     public static void beforeClass() { 
  15.         System.out.println("in before class"); 
  16.     } 
  17.  
  18.     /** 
  19.      * 只執行一次,在整個類執行之后執行 
  20.      */ 
  21.     @AfterClass 
  22.     public static void afterClass() { 
  23.         System.out.println("in after class"); 
  24.     } 
  25.  
  26.     /** 
  27.      * 每個測試方法被執行前都被執行一次 
  28.      */ 
  29.     @Before 
  30.     public void before() { 
  31.         System.out.println("in before"); 
  32.     } 
  33.  
  34.     /** 
  35.      * 每個測試方法被執行后都被執行一次 
  36.      */ 
  37.     @After 
  38.     public void after() { 
  39.         System.out.println("in after"); 
  40.     } 
  41.  
  42.     // test case 1 
  43.     @Test 
  44.     public void testCase1() { 
  45.         System.out.println("in test case 1"); 
  46.     } 
  47.  
  48.     // test case 2 
  49.     @Test 
  50.     public void testCase2() { 
  51.         System.out.println("in test case 2"); 
  52.     } 
  53.  
  54.     /** 
  55.      * 測試assertEquals 
  56.      */ 
  57.     @Test 
  58.     public void testEquals() { 
  59.         Assert.assertEquals(1 + 2, 3); 
  60.     } 
  61.  
  62.     /** 
  63.      * 測試assertTrue 
  64.      */ 
  65.     @Test 
  66.     public void testTrue() { 
  67.         Assert.assertTrue(1 + 2 == 3); 
  68.     } 
  69.  
  70.     /** 
  71.      * 測試assertFalse 
  72.      */ 
  73.     @Test 
  74.     public void testFals() { 
  75.         Assert.assertFalse(1 + 2 == 4); 
  76.     } 
  77.  
  78.     /** 
  79.      * 測試assertNotNull 
  80.      */ 
  81.     @Test 
  82.     public void assertNotNull() { 
  83.         Assert.assertNotNull("not null"); 
  84.     } 
  85.  
  86.     /** 
  87.      * 測試assertNull 
  88.      */ 
  89.     @Test 
  90.     public void assertNull() { 
  91.         Assert.assertNull(null); 
  92.     } 
  93.  
  94.     /** 
  95.      * 測試fail和Ignore 
  96.      */ 
  97.     @Test 
  98.     @Ignore 
  99.     public void assertFail() { 
  100.         Assert.fail(); 
  101.     } 
  102.  
  103.     /** 
  104.      * 測試異常 
  105.      */ 
  106.     @Test(expected = NullPointerException.class) 
  107.     public void testException() { 
  108.         throw new NullPointerException(); 
  109.     } 
  110.  
  111.     /** 
  112.      * 測試時間 
  113.      */ 
  114.     @Test(timeout = 1000) 
  115.     public void testTimeoutSuccess() { 
  116.         // do nothing 
  117.     } 
  118.  
  119.     /** 
  120.      * 測試時間 
  121.      */ 
  122.     @Test(timeout = 1000) 
  123.     public void testTimeoutFailed() { 
  124.         while (true) { 
  125.  
  126.         } 
  127.     } 

總結

本文主要介紹了JUnit的常見用法,后面會專門寫一篇文章介紹如何將JUnit和Spring集合到一起。

【本文是51CTO專欄作者Hollis的原創文章,作者微信公眾號Hollis(ID:hollischuang)】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: Hollis
相關推薦

2017-01-14 23:26:17

單元測試JUnit測試

2017-03-23 16:02:10

Mock技術單元測試

2017-01-14 23:42:49

單元測試框架軟件測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2021-03-28 23:03:50

Python程序員編碼

2011-08-11 13:02:43

Struts2Junit

2023-07-26 08:58:45

Golang單元測試

2023-08-02 13:59:00

GoogleTestCTest單元測試

2009-06-08 19:59:09

EclipseJUnit單元測試

2009-06-08 19:57:29

EclipseJUnit4單元測試

2009-06-08 20:04:06

EclipseJUnit4單元測試

2012-05-17 09:09:05

Titanium單元測試

2020-08-18 08:10:02

單元測試Java

2009-08-19 09:00:48

單元測試框架自動化測試

2015-09-28 15:03:38

網絡架構測試

2021-05-05 11:38:40

TestNGPowerMock單元測試

2024-10-16 16:09:32

2011-11-18 15:18:41

Junit單元測試Java

2020-05-07 17:30:49

開發iOS技術

2011-07-04 18:16:42

單元測試
點贊
收藏

51CTO技術棧公眾號

37p粉嫩大胆色噜噜噜| 日韩 欧美 视频| 国产精品视频第一页| 自拍视频亚洲| 亚洲精品美女在线| 91欧美视频在线| 美女精品导航| 91小视频在线| 91美女高潮出水| 丰满少妇乱子伦精品看片| 欧美日韩色图| 日韩欧美自拍偷拍| aaaaaa亚洲| 欧洲性视频在线播放| 久久久久久久综合狠狠综合| 亚洲一区二区三区在线免费观看| 青青操免费在线视频| 国产精品毛片久久| 精品人伦一区二区三区蜜桃免费| jiujiure精品视频播放| 久久久99久久| 99在线视频首页| 日韩黄色片网站| 欧美日韩国产在线一区| 在线观看日韩专区| 在线观看国产免费视频| 欧美第一在线视频| 欧美色精品天天在线观看视频| 国产美女在线一区| 黄色一级大片在线免费看产| 日本一区二区三区在线观看| 国产美女在线精品免费观看| 国产手机av在线| 免费视频最近日韩| 国产精品白嫩初高中害羞小美女 | 97不卡在线视频| 欧美日韩精品亚洲精品| 欧美电影免费播放| 亚洲午夜久久久久久久| 精品国产人妻一区二区三区| 一区二区精彩视频| 欧美一级黄色大片| 国产传媒免费观看| 国产精品久久乐| 色婷婷国产精品综合在线观看| 日本a视频在线观看| 日本资源在线| 一区二区在线免费观看| 成年人免费观看的视频| 一广人看www在线观看免费视频| 久久久久9999亚洲精品| 你懂的视频在线一区二区| 日本免费网站在线观看| 成人亚洲一区二区一| 99久久伊人精品影院| 亚洲国产精品国自产拍久久| 国精产品一区一区三区mba视频 | 成人免费在线观看视频网站| 日韩成人影音| 欧美伊人久久久久久久久影院 | 亚洲欧美999| 懂色av粉嫩av蜜乳av| 日韩激情毛片| 精品一区二区三区三区| 91久久免费视频| 欧美日韩123| 在线播放国产精品| 999久久久国产| 久久久久久久久丰满| 久久精品中文字幕免费mv| 中文字幕资源站| 一本一本久久a久久综合精品| 欧美大胆在线视频| 久久久久久久99| 裸体素人女欧美日韩| 国产精品成人免费视频| 一级全黄裸体免费视频| 国产综合久久久久久鬼色 | 国产成人精品三级高清久久91| 亚洲乱码一区av黑人高潮| 天天干天天舔天天操| 999国产精品永久免费视频app| 久久国产色av| 免费日韩一级片| 日韩av一区二| 99在线观看视频| 日本免费一区二区三区最新| 国产精品五月天| 大桥未久一区二区三区| 99在线视频影院| 欧美视频中文一区二区三区在线观看 | 亚洲午夜福利在线观看| 日本不卡二三区| 九九热在线精品视频| 日韩精品视频播放| 秋霞电影网一区二区| 91嫩草在线| 瑟瑟在线观看| 亚洲色图.com| 免费高清在线观看免费| 99国内精品久久久久| 亚洲精品v欧美精品v日韩精品| 少妇视频在线播放| 激情欧美国产欧美| 国产欧美日韩精品丝袜高跟鞋| 性一交一乱一色一视频麻豆| 欧美极品xxx| 男人添女人下部高潮视频在观看| 青草综合视频| 亚洲美女在线视频| 久久黄色小视频| 久久精品国产网站| 蜜桃av噜噜一区二区三区| 97影院秋霞午夜在线观看| 欧美性猛交丰臀xxxxx网站| 三级黄色片免费看| 日韩系列欧美系列| 奇米成人av国产一区二区三区| 国产黄色大片网站| 亚洲国产精品精华液2区45| av在线播放天堂| 99er精品视频| 色老头一区二区三区| 黄瓜视频在线免费观看| 成人免费av网站| 国产在线观看欧美| 国产精品一区二区美女视频免费看| 亚洲欧美日韩网| 日本亚洲欧美在线| 国产a久久麻豆| 中文字幕日韩一区二区三区| 日韩一区二区三区在线免费观看 | 午夜亚洲影视| 成人精品一二区| 成人短视频在线观看| 欧美日韩一区 二区 三区 久久精品| 天天躁日日躁aaaxxⅹ| 中文在线一区| 精品一区二区国产| 超碰在线最新网址| 精品国产a毛片| 国产主播在线观看| 成人免费看黄yyy456| 欧美做暖暖视频| 亚洲精品高潮| 欧美国产在线电影| 亚洲精品久久久狠狠狠爱| 亚洲乱码一区二区三区在线观看| 爱爱爱爱免费视频| 久久精品亚洲欧美日韩精品中文字幕| 成人福利视频网| 免费网站看v片在线a| 欧美日韩一级二级三级| 日韩av片在线免费观看| 免费成人在线影院| 综合操久久久| 日韩精品中文字幕一区二区| 久久99热这里只有精品国产 | 日韩av网站大全| 久久夜靖品2区| 91视频观看视频| 少妇高清精品毛片在线视频| 国产欧美日韩在线观看视频| 国产欧美一区二区| 成人影院在线看| 精品国产免费一区二区三区四区| 中文在线观看免费网站| 91免费视频网| 欧美大尺度做爰床戏| 91亚洲自偷观看高清| 亚洲a在线播放| 成人免费高清观看| 国产亚洲精品久久久久久牛牛| 亚洲中文无码av在线| 最新欧美精品一区二区三区| 日本精品一二三| 男人的天堂成人在线| 亚洲精品一品区二品区三品区| 999精品嫩草久久久久久99| 欧美精品videosex性欧美| 三级国产在线观看| 欧美日韩1234| 欧美三日本三级少妇99| 日本一区二区三区国色天香 | 欧美精品成人91久久久久久久| 亚洲av成人无码久久精品老人| 欧美午夜免费电影| 欧美激情国产精品免费| 国产亚洲自拍一区| 日韩视频在线观看一区二区三区| 国产欧美日韩一区二区三区在线| 日韩一本精品| 国产精品一线| 国产欧美日韩91| 深夜成人在线| www.欧美免费| 污视频软件在线观看| 欧美日韩国产一级二级| 日本熟妇色xxxxx日本免费看| 国产欧美精品一区二区色综合| 午夜诱惑痒痒网| 久久一区国产| 野外做受又硬又粗又大视频√| 欧美成人milf| 美女一区视频| 粉嫩久久久久久久极品| 91精品久久久久久久久久 | 欧美午夜国产| 四虎影院一区二区三区 | 日韩av一区在线观看| 亚洲综合视频在线播放| 日韩欧美成人免费视频| 欧美成人综合色| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产一区二区在线观看免费视频| 国产精品久久久亚洲一区| 神马午夜伦理影院| 精品久久久久中文字幕小说 | 性久久久久久久| 少妇被躁爽到高潮无码文| 国产三级欧美三级日产三级99| 蜜臀av粉嫩av懂色av| 狠狠色狠狠色合久久伊人| 国产一级片黄色| 国产欧美一区二区色老头 | 蜜臀av一区二区在线观看| 青青青青草视频| 欧美在线三区| 亚洲综合欧美日韩| 欧美日韩精品在线一区| 欧美日韩三区四区| 欧美人妖在线观看| 成人免费91在线看| 无码国模国产在线观看| 成人写真福利网| 精品裸体bbb| 日韩女优人人人人射在线视频| 国产污视频在线播放| 久久久欧美一区二区| 四虎影视国产在线视频| 欧美精品少妇videofree| 九色porny在线| 精品国产欧美一区二区三区成人 | 亚洲男人都懂第一日本| 韩国成人一区| 神马日本精品| 欧美日韩电影一区二区三区| 竹菊久久久久久久| 日本在线观看一区二区| 国产日产精品一区二区三区四区的观看方式| 九色一区二区| 日韩一级电影| 免费av一区二区三区| 任你躁在线精品免费| 鲁鲁视频www一区二区| 性欧美lx╳lx╳| 日本一区二区在线| 日韩中文字幕高清在线观看| 一区二区在线观看网站| 伊人久久大香线蕉精品组织观看| 六月婷婷激情网| 在线观看亚洲| 国产中文字幕免费观看| 日本免费在线视频不卡一不卡二| 99sesese| 成人手机在线视频| 国产夫妻性爱视频| 亚洲国产精品黑人久久久| 高h视频免费观看| 午夜视频在线观看一区二区三区| 亚洲天堂视频网站| 色天天综合久久久久综合片| 在线观看不卡的av| 日韩一区二区免费电影| 亚洲va天堂va欧美ⅴa在线| 日韩第一页在线| 瑟瑟视频在线| 欧美日韩第一视频| 麻豆免费在线| 国产日韩欧美在线看| 99re8这里有精品热视频免费| 久久综合中文色婷婷| 欧美mv日韩| 久艹视频在线免费观看| 免费看一级一片| 日本免费视频在线观看| 五月天婷婷在线视频| 在线观看日产精品| 一级黄色免费片| 日韩精品一区二| 日色在线视频| 国产精品二三区| wwwwxxxx国产| 亚洲男人天堂一区| 波多野结衣国产| 91.成人天堂一区| 日本五码在线| 欧美成人免费大片| 日本韩国欧美| 国产成人精品免费视频大全最热 | 91麻豆精品91久久久久久清纯 | 日日夜夜狠狠操| 日韩天堂在线观看| 成人av电影观看| 7m第一福利500精品视频| 成人精品高清在线视频| 激情欧美一区二区三区中文字幕| 久久精品av| 37pao成人国产永久免费视频| 国产精品自在在线| 粉嫩精品久久99综合一区| 五月天网站亚洲| 精品久久国产视频| 中文字幕亚洲一区二区三区| 欧美a级在线观看| 999在线免费观看视频| 第四色成人网| 久久久久久久久久福利| 成人av资源在线观看| 人妻久久一区二区| 欧美三级韩国三级日本三斤| 四虎精品在永久在线观看 | 日韩欧美亚洲区| 亚洲精品在线二区| 乱码一区二区三区| 亚洲欧洲日韩综合一区二区| 最近日韩免费视频| 亚洲精品网址在线观看| 爱啪啪综合导航| 国产不卡一区二区在线观看| 午夜精品亚洲| 亚洲一级片免费观看| 国产精品高清亚洲| 超碰在线97观看| 亚洲三级 欧美三级| 亚洲风情在线资源| 免费久久久一本精品久久区| 亚洲欧美日本日韩| 国产又黄又粗又猛又爽的视频| 亚洲午夜电影在线观看| 亚洲精品97久久中文字幕无码| 欧美成年人网站| 久久99精品久久久野外观看| 三年中文高清在线观看第6集| 精品午夜久久福利影院| 黄色一级大片在线免费观看| 欧美男人的天堂一二区| 蜜桃视频网站在线| 成人乱色短篇合集| 午夜影院欧美| 日本一区二区三区在线免费观看| 国产精品女上位| 一区二区三区播放| 久久久精品视频成人| 免费观看亚洲天堂| 特级西西人体www高清大胆| 国产福利91精品一区二区三区| 青青草偷拍视频| 亚洲第一免费网站| 麻豆免费在线| 神马影院一区二区| 久久99国产乱子伦精品免费| 黄色片在线观看网站| 欧美电影免费提供在线观看| 人成在线免费网站| 日韩wuma| 国产在线国偷精品免费看| 久久久精品一区二区涩爱| 亚洲国产精品推荐| 天天免费亚洲黑人免费| 亚洲mv在线看| 国产精品一二三| av大片免费在线观看| 亚洲最新av在线网站| 高清一区二区中文字幕| 人人干视频在线| 亚洲国产成人私人影院tom| 国产片高清在线观看| 午夜精品久久久久久久男人的天堂| 伊人久久大香线蕉无限次| 天天综合网久久| 亚洲一区二区五区| 男人的天堂在线视频| 国产精选久久久久久| 欧美日本不卡高清| avtt香蕉久久| 欧美视频一区二区三区四区| 免费电影网站在线视频观看福利| 久久久久高清| 国产专区欧美精品| 欧美videossex极品| 精品国内亚洲在观看18黄| 国语一区二区三区| 久久人人爽av| 精品福利免费观看| 久久久久久久久免费视频| 你懂的网址一区二区三区| 国产精品主播直播| 波多野结衣人妻| 国内精品视频在线|