国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

開發 開發工具
本文主要介紹了JUnit的常見用法

上一彈中介紹了單元測試以及單元測試框架(《單元測試第二彈——單元測試與單元測試框架》),這一彈主要來介紹一下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也有同樣的功能)

使用Junit進行測試

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

使用Junit進行測試

可以看到,一般的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

public class Assert extends java.lang.Object

這個類提供了一系列的編寫測試的有用的聲明方法。只有失敗的聲明方法才會被記錄。

(1)void assertEquals(boolean expected, boolean actual)

         檢查兩個變量或者等式是否平衡

(2)void assertFalse(boolean condition)

        檢查條件是假的

(3)void assertNotNull(Object object)

        檢查對象不是空的

(4)void assertNull(Object object)

        檢查對象是空的

(5)void assertTrue(boolean condition)

        檢查條件為真

(6)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的原創文章,轉載聯系作者本人獲取授權】

 

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-01-16 12:12:29

單元測試JUnit

2017-03-23 16:02:10

Mock技術單元測試

2017-01-14 23:42:49

單元測試框架軟件測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2011-08-11 13:02:43

Struts2Junit

2021-03-28 23:03:50

Python程序員編碼

2023-07-26 08:58:45

Golang單元測試

2023-08-02 13:59:00

GoogleTestCTest單元測試

2009-06-08 20:04:06

EclipseJUnit4單元測試

2009-06-08 19:59:09

EclipseJUnit單元測試

2009-06-08 19:57:29

EclipseJUnit4單元測試

2012-05-17 09:09:05

Titanium單元測試

2020-08-18 08:10:02

單元測試Java

2024-10-16 16:09:32

2011-11-18 15:18:41

Junit單元測試Java

2009-08-19 09:00:48

單元測試框架自動化測試

2015-09-28 15:03:38

網絡架構測試

2011-07-04 18:16:42

單元測試

2020-05-07 17:30:49

開發iOS技術

2021-05-05 11:38:40

TestNGPowerMock單元測試
點贊
收藏

51CTO技術棧公眾號

免费人成在线观看播放视频| 99在线视频影院| 在线观看日韩av电影| 精品国产免费一区二区三区香蕉 | 青草国产精品久久久久久| 久久大大胆人体| 一本一道波多野毛片中文在线| 国产成人午夜精品影院观看视频| 91色琪琪电影亚洲精品久久| 日韩毛片免费看| 91精品国产综合久久福利| av免费看大片| 91亚洲男人天堂| 亚洲三区视频| 亚洲激情网站| 成人欧美一区二区三区在线湿哒哒| 久久九九精品视频| 一个人看的www久久| 波多野结衣中文在线| 在线观看不卡视频| 依依成人在线| 亚洲国产精品视频| av毛片免费| 亚洲天堂福利av| 一菊综合网成人综合网| 91女神在线视频| www精品久久| 国产精品一区久久久久| 日韩欧美在线一区二区| 亚洲二区精品| 国产三区精品| 激情成人综合| 好吊色欧美一区二区三区四区| 图片区亚洲欧美小说区| 国产欧美日韩精品专区| 成人aaaa| 国产精品国语对白| 亚洲制服一区| 国产精品亚洲综合天堂夜夜| 人人狠狠综合久久亚洲婷| 国产噜噜噜噜噜久久久久久久久 | 最新av网址在线观看| 国产呦萝稀缺另类资源| 樱花www成人免费视频| 久久av资源站| 2018日日夜夜| 日本一区二区三区高清不卡| 欧美精品久久久久久久久25p| 国产欧美日韩另类一区| 日本久久久久久久久久久久| 国产精品白丝在线| 五丁香在线视频| 欧美日韩成人综合在线一区二区| 国产成人在线视频免费观看| 亚洲精品久久久久| a成人v在线| 国内外成人免费激情在线视频网站 | 福利视频免费在线观看| 99国产精品久久| 一级片视频免费观看| **欧美大码日韩| 羞羞视频在线免费看| 欧美视频在线观看一区| 国产乱码在线| 欧美乱人伦中文字幕在线| 超碰成人久久| 日本一区免费看| 国产mv日韩mv欧美| 调教视频vk| 日本韩国一区二区三区| 波多野结衣在线观看| 精品国产一区av| 欧美精品羞羞答答| 久久精品国产一区二区三区日韩| 国产毛片精品视频| 黄色永久免费网站| 91福利在线免费观看| 国产激情在线播放| 欧美高清在线视频观看不卡| 偷拍欧美精品| 日韩精品福利片午夜免费观看| 国产精品拍天天在线| 超碰免费97在线观看| 国产一区二区免费| 日韩精品dvd| 91免费国产精品| 五月天中文字幕一区二区| 原纱央莉成人av片| 国产日韩欧美中文| 国产成人8x视频一区二区| 传媒视频在线| 亚洲免费av网址| 成人羞羞网站| 无颜之月在线看| 亚洲h动漫在线| 日韩欧美一区二区三区免费观看| 国产精品免费看久久久香蕉| 国产在线不卡一卡二卡三卡四卡| 特级全黄一级毛片| 亚洲国产三级网| 久久资源中文字幕| 日韩欧美一区二| 91精品婷婷国产综合久久性色| 卡通动漫精品一区二区三区| 日韩动漫在线观看| 亚洲一级不卡视频| 9999精品| 亚洲午夜精品福利| 色偷偷久久一区二区三区| 日韩欧美中文字幕在线视频| 欧美高清性xxxxhd| 亚洲一二三级电影| 久久夜夜久久| 欧美连裤袜在线视频| 一区二区三区资源| 精品久久久久久久久久岛国gif| 欧美一区二区三区在线播放| 亚洲第一激情av| 国产厕拍一区| 国产精品88久久久久久妇女 | 日韩一区日韩二区| 大片免费在线看视频| 国产999精品久久久影片官网| 国产福利一区二区| 91免费在线| 成人国产精品一区| 国产精品第一页第二页第三页| 欧美电影免费观看高清完整| 国产精品大全| 亚洲福中文字幕伊人影院| 精品视频在线播放一区二区三区 | 色噜噜狠狠色综合中国| 第四色中文综合网| 青青在线免费观看| 欧美成人精品福利| 激情自拍一区| 亚洲精品一区视频| 国产成人拍精品视频午夜网站| 26uuu久久综合| 日韩毛片一区| 亚洲一区三区电影在线观看| 欧美精品自拍偷拍动漫精品| 秋霞欧美视频| av在线电影网站| 欧洲中文字幕国产精品| 国产欧美精品一区二区三区四区| 日韩制服一区| 老子影院午夜伦不卡大全| 日韩精品视频中文在线观看| 美腿丝袜亚洲综合| jizz性欧美| 免费电影一区| 精品久久人人做人人爽| 免费在线一区观看| 中文在线8资源库| 超碰在线免费观看97| 亚洲欧美成人一区二区在线电影| 国内精品久久久久影院一蜜桃| 国产一二三在线| 亚洲色成人www永久在线观看| 色一区av在线| 国产欧美日韩中文久久| 美女视频亚洲色图| 在线观看你懂| 精品久久中出| 日韩av在线网址| 国产福利一区二区三区视频 | 另类欧美小说| 欧美精品三级在线观看| 亚久久调教视频| 欧美在线极品| 国模吧无码一区二区三区| 美女久久久久久久| 日本一区二区久久| 激情五月综合| 国内av一区二区三区| 欧美精品一区二区三区在线看午夜| 精品免费一区二区三区| 成人一区二区三区中文字幕| 亚洲一区 二区| 又黄又爽在线免费观看| 国产三级精品在线不卡| 亚洲精品第一页| 国产校园另类小说区| 日韩在线二区| 黄a在线观看| 国产成人一区二区三区别| 欧美激情精品久久久久久免费印度 | 精品99999| 97久久久精品综合88久久| 国产在线播放精品| 婷婷亚洲一区二区三区| 日本一区视频在线播放| 色香阁99久久精品久久久| 亚洲欧美精品午睡沙发| 亚洲三级网站| 成人日韩视频| 福利视频在线看| 成人一区二区免费视频| 国产精品视频网站|