1. 程式人生 > >Java的單元測試和整合spring單元測試

Java的單元測試和整合spring單元測試

在我們編寫專案過程中,經常會需要進行程式碼測試,那是不是在編寫一個main方法之後,然後編寫各種的測試程式碼。這樣做,顯然是不合適的也是很不專業的。那怎麼辦呢?今天我們來聊下junit(單元測試)。

       為了後期測試基於spring的單元測試,我們直接新建spring工程。

新建之後,我們先講一般在java專案中怎麼去做單元測試。

我們先定義一個實體User

在service包中新建一個介面,在介面中定義一個方法,方法的返回值就是返回一個使用者物件

有有了介面,對應這我們去編寫它的實現類

這裡面就是一個簡單的業務邏輯,如果id為1則返回一個User物件,否則返回一個空值。在真實的專案中,這邊肯定不是這麼簡單的業務,它對應著的肯定是呼叫持久層相關的方法,進行業務邏輯的實現。我們這邊只是為了講解單元測試,所以例子相對簡單。

service實現已經寫好,那我們下步做的事情就是對它進行單元測試。

首先,新建測試類

我們這邊新建跟src一樣型別的原始檔,名字取為test。為什麼這麼做?也就是這樣做的好處是什麼?1.層次清晰,專案程式碼跟測試程式碼分開,條目很清晰。2.方便管理。

新建好test源包之後,我們再來新建測試類。怎麼新建呢?滑鼠右擊你要測試的類,點選new按鈕,再點選右側的other,在搜尋框中輸入junit。選擇Junit Test Case,點選next,出現如下介面

點選Browse按鈕選擇,我們新建的test源目錄,勾選junit4

點選next,它會自動掃描你測試類中所有的方法。


選中你想測試的方法,點選finish。

由此我們的單元測試新建就基本完成了。

注意:我們這邊引用的是junit4,那有些小夥伴加的junit3。那他們的區別是什麼呢?junit3需要繼承TestCase這個類,而我們junit4不需要。

import static org.junit.Assert.*;    斷言(不詳解,可百度)

基本註解
    @Test:將一個普通的方法修飾成為一個測試方法,可以接受異常
            @Test(expected=XX.class)  接受異常
            @Test(timeout=毫秒)   定時結束
    @BeforClass:它會在所有的方法執行前被執行,只執行一次,static修飾,用來載入配置檔案
    @AfterClass:它會在所有的方法執行結束後被執行,static修飾,用來釋放資源
    @Before:會在每一個測試方法被執行前執行一次
    @After:會在每一個測試方法執行後被執行
    @Ignore:所修飾的方法會被測試執行器忽略
    @RunWith:可以更改測試執行器 只要你的測試器繼承org.junit.runner.Runner

演示如下:


右擊執行選擇Junit Test

顯示結果:


那下面我們來結合案例來測試下我們的簡單Servcie

雙擊我們要測試的方法名,右擊執行Junit Test,首先測試面板不報錯。綠色代表程式無錯。紅色代表程式出錯,根據出錯資訊,查詢錯誤所在地,然後進行修改。

左邊的Runs:1/1 表示你運行了幾個Test測試方法。 Errors:0 表示有多少個錯誤。Failures:0 表示使用斷言的時候,為期望我達到的值的方法有幾個。


控制檯列印結果


至此我們普通的單元測試基本用法已經講完。

那基於spring的單元測試怎麼弄呢?(這邊講解是針對有spring基礎的人群)

首先載入spring的jar包

spring-test-4.0.4.RELEASE(注意版本)

commons-logging-1.2.jar

在applicationContext.xml中,掃描service實現包

<context:component-scan base-package="service.impl"></context:component-scan>

在UserServiceImpl實現類上使用springmvc 註解@Service("userService")

編寫spring單元測試,點選執行。


@RunWith(SpringJUnit4ClassRunner.class)  上面已做介紹。

@ContextConfiguration(locations={"classpath:applicationContext.xml"})載入配置檔案,locations引數是一個數組,可以載入多個,配置檔案。

@Resource 自動注入Ioc容器的對應的bean。

@Test 我們的測試方法。

junit的套件測試:

當我們新建了大量的測試類,我們不可能當程式出現問的時候,再一個一個的開啟類然後點選一個一個的方法吧。那這邊就可以用到junit的套件測試。

在我們的測試包中,點選右擊新建Junit Test Suit,選擇我們所有的測試類,點選finish


點選執行即可,就達到我們一次測試所有測試類的目的了。

當然,junit 還有很多強大的功能,比如多引數測試等等。。。希望各位小夥伴能夠愉快的玩耍,此次講解只是最基礎的用法。大神繞過。。。

但是,我們junit也不是萬能的,使用junit進行單元測試,只是證明了你的程式無錯,並沒有證明你的程式就是對的。