SpringBoot中使用JNnit4(入門篇)

2022-04-02 12:00:30 字數 4509 閱讀 2670

一、新增依賴

org.springframework.boot

spring-boot-starter-test

若測試類的包路徑和啟動類的包路徑不一致,會出現以下錯誤資訊:

neither @contextconfiguration nor @contexthierarchy found for test class [xx.xx.test], using springbootcontextloader

could not detect default resource locations for test class [xx.xx.test]: no resource found for suffixes .

could not detect default configuration classes for test class [xx.xx.test]: test does not declare any static, non-private, non-final, nested classes annotated with @configuration.

三、測試類新增

package

xx.xx.test;

@runwith(springjunit4classrunner.

class

)@springboottest

public

class

@before

public

void

init()

@after

public

void

end()

@beforeclass

public

static

void

initclass()

@afterclass

public

static

void

endclass()

}

package

xx.xx.test;

public

class test extends

@autowired

private

btstradegoodsservice btstradegoodsservice;

@org.junit.test

public

void

add()

}

然後在有@test註解方法的類中使用juint啟動。

在@test註解的方法中,和平時開發專案呼叫介面是一樣的。

四、註解

1、類註解

@runwith:

1.表示執行方式,@runwith(junit4testrunner)、@runwith(springrunner.class)、@runwith(powermockrunner.class) 三種執行方式,分別在不同的場景中使用。

1.當乙個類用@runwith注釋或繼承乙個用@runwith注釋的類時,junit將呼叫它所引用的類來執行該類中的測試而不是開發者去在junit內部去構建它。我們在開發過程中使用這個特性。

@springboottest:

1.1.當沒有特定的contextconfiguration#loader()(@contextconfiguration(loader=...))被定義那麼就是springbootcontextloader作為預設的contextloader。

1.2.自動搜尋到springbootconfiguration註解的檔案。

1.3.允許自動注入environment類讀取配置檔案。

1.4.提供乙個webenvironment環境,可以完整的允許乙個web環境使用隨機的埠或者自定義的埠。

1.5.註冊了testresttemplate類可以去做介面呼叫。

2.新增這個就能取到spring中的容器的例項,如果配置了@autowired那麼就自動將物件注入。

@webintegrationtest("server.port:0"):

2、方法註解

@beforeclass:方法只能是static void。

@afterclass:方法只能是static void。

@before:@test執行之前呼叫的方法,可以做初始化操作

@after:執行完測試用例需要執行的清理工作

@test:測試用例的單元

@mock:

有點類似autowired註解,而@mock註解是自動實現模擬物件,而並非bean例項建立。

正式環境只是乙個介面,並沒有實現,也並沒有納入spring容器進行管理。使用bddmockito對行為進行**。

@ignore("not ready yet"):該方法不執行

執行順序是:@beforeclass→@before→@test→@after→@afterclass

當啟動測試類,測試類中有多個@test,@beforeclass和@afterclass只會執行一次,每乙個@test都會執行一次@before和@after。

五、對controller進行測試

1、使用瀏覽器直接訪問:

2、使用測試類:

package

xx.xx.ctrl;

import

import

org.springframework.web.bind.annotation.requestparam;

import

org.springframework.web.bind.annotation.restcontroller;

@restcontroller

public

class

userctrl

public string show(@requestparam("id")string id)

}

package

xx.xx.test;

import

org.junit.after;

import

org.junit.afterclass;

import

org.junit.before;

import

org.junit.beforeclass;

import

org.junit.runner.runwith;

import

org.springframework.boot.test.context.springboottest;

import

org.springframework.test.context.junit4.springrunner;

@runwith(springrunner.

class

)@springboottest(webenvironment =springboottest.webenvironment.random_port)

public

class

@before

public

void

init()

@after

public

void

end()

@beforeclass

public

static

void

initclass()

@afterclass

public

static

void

endclass()

}

package

xx.xx.test;

import

org.springframework.beans.factory.annotation.autowired;

import

org.springframework.boot.test.web.client.testresttemplate;

public

class test extends

@autowired

private

testresttemplate testresttemplate;

@org.junit.test

public

void

toindex()

@org.junit.test

public

void

toshow()

@override

public

void

init()

}

使用這種方式,在@springboottest註解中一定要新增webenvironment = springboottest.webenvironment.random_port

Spring Boot中使用MongoDB資料庫

前段時間分享了關於spring boot中使用redis的文章,除了redis之後,我們在網際網路產品中還經常會用到另外一款著名的nosql資料庫mongodb。下面就來簡單介紹一下mongodb,並且通過乙個例子來介紹spring boot中對mongodb訪問的配置和使用。mongodb是乙個基...

Spring Boot中使用MongoDB資料庫

前段時間分享了關於spring boot中使用redis的文章,除了redis之後,我們在網際網路產品中還經常會用到另外一款著名的nosql資料庫mongodb。下面就來簡單介紹一下mongodb,並且通過乙個例子來介紹spring boot中對mongodb訪問的配置和使用。mongodb是乙個基...

SpringBoot中使用日誌

結果 所有配置檔案都會被載入,高優先順序的配置檔案會覆蓋低優先順序的配置檔案 springboot 底層是spring框架,spring框架預設是用jcl springboot選用slf4j和logback作為日誌框架 如何使用slf4j import org.slf4j.logger import...