1. 程式人生 > >springboot中的junit單元測試

springboot中的junit單元測試

前言

Junit是一個Java語言的單元測試框架,被開發者用於實施對應用程式的單元測試,加快程式編制速度,同時提高編碼的質量。是一個在發展,現在已經到junit5,在javaEE開發中與很多框架相整合,使得開發者很方便。 
這裡寫圖片描述

Junit常用註解:

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

Junit測試用例執行順序:

@BeforeClass ==> @Before ==> @Test ==> @After ==> @AfterClass 
過程:就是先載入模擬的環境,再進行測試

測試準備

依賴版本(不同版本存在一些差異)

  • junit 4.12
  • spring-test 4.3.6
  • spring-boot-test 1.5.1

新增依賴(必須)

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId
>
<version> 1.5.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.6.RELEASE</version> </dependency> <dependency
>
<groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.12</version> </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

編輯器(非必須)

IntellijIDEA

測試程式碼

測試程式碼如下:

import cn.yjxxclub.springboot.entity.Member;
import cn.yjxxclub.springboot.mapper.MemberMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Author: 遇見小星
 * Email: [email protected]
 * Date: 17-6-16
 * Time: 下午12:18
 * Describe: member應用測試類
 */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MemberTest {

    /**
     * Spring RestTemplate的便利替代。你可以獲取一個普通的或傳送基本HTTP認證(使用使用者名稱和密碼)的模板
     * 這裡不使用
     */
    @Autowired
    private TestRestTemplate testRestTemplate;

    @Autowired
    MemberMapper memberMapper;


    /**
     * 2017-06-16 14:08:09.884  INFO 13803 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
     size:5
     -----測試完畢-------
     2017-06-16 14:08:09.955  INFO 13803 --- [       Thread-4] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot[email protected]fd07cbb: startup date [Fri Jun 16 14:08:04 CST 2017]; root of context hierarchy
     */
    @Test
    public void test(){
        Map<String,Object> map = new HashMap();
        map.put("start",0);
        map.put("size",8);
        List<Member> list = memberMapper.list(map);
        System.out.println("size:"+list.size());
        System.out.println("-----測試完畢-------");

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

程式碼說明

  • @RunWith 是junit提供的,前言已經說了
  • SpringRunner是spring-test提供的測試執行單元類(SpringJUnit4ClassRunner的新名字) 
    這裡寫圖片描述
  • @SpringBootTest is saying “bootstrap with Spring Boot’s support”,類似springboot程式的測試引匯入口 
    具體請看spring.io解釋: 
    這裡寫圖片描述

後記

  • 在springboot1.4.1以前的版本時候,網上用如下載入方式(這個方式筆者沒試過,因為是aliyun的依賴庫1.4.1以前的已經不支援了)
@RunWith(SpringRunner.class)
@SpringApplicationConfiguration(classes = SpringBootSampleApplication.class)
public class MemberTest {
  • 1
  • 2
  • 3
  • 在spring的其他專案中一般載入是
@RunWith(SpringRunner.class)
@ContextConfiguration(locations={"classpath:spring-servlet.xml", "classpath:spring-dao-test.xml", "classpath:spring-service-test.xml"})
public class MemberTest {
  • 1
  • 2
  • 3
  • 4
  • spring-boot-test還提供@DataJpaTest,@JsonTest,@JdbcTest註解,非常方便。
  • 不管spring提供的有多方便,還是開始說的那句話:先載入模擬的環境,再進行測試

相關推薦

springBoot dubbo junit 單元測試

依賴   <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.12</versi

SpringBoot使用Junit單元測試

SpringBoot + mybatis 開發工具:IntelliJ IDEA 1.pom.xml 一般使用idea新建一個SpringBoot web專案時,一般都會自動引入此依賴,如果沒有,請手動引入。         

Spring Boot---(11)SpringBoot使用Junit單元測試

摘要:本文詳細的記錄了SpringBoot如何結合Junit寫測試用例,如何執行,打包執行,忽略執行等操作,SpringBoot內建了Junit測試元件,使用很方便,不用再單獨引入其他測試元件。 演示環境: SpringBoot + mybatis 開發工具:IntelliJ IDEA

SpringBootJunit單元測試遇到的一些問題

情況 ①:不能有返回值@Controller public class FileControllerTest{ @Autowired private FileController fileController; @Test public S

SpringBootJunit單元測試

  最近做專案搭建的是springboot框架,springboot搭建的辛酸淚就不多說了,然而我們做專案單元測試是少不了的,然而這springboot專案怎麼搞單元測試?我呢個去!摸索了半個小時終

SpringBoot開發Junit單元測試方法

最近在做基於SSM框架的開發,使用SpringBoot代替了SpringMVC,怎麼使用Junit單元測試呢? 首先在該服務的pom檔案中新增支援junit的依賴: 然後在src/test/java 目錄下新增一個父類,用來setup WebApplicationCo

springbootjunit單元測試

前言 Junit是一個Java語言的單元測試框架,被開發者用於實施對應用程式的單元測試,加快程式編制速度,同時提高編碼的質量。是一個在發展,現在已經到junit5,在javaEE開發中與很多框架相整合,使得開發者很方便。  Junit常用註解: @Before:初始化

Junit 單元測試在 intelliJ IDEA 的安裝

repo setting 進入 安裝 junit sta rain pos 每次 1.為什麽使用Junit我們都知道,main 方法是一個程序的入口,通常來說,沒有main方法,程序就無法運行。我們經常會寫一些class文件(如下圖所示),他們並沒有自己的main方法。那麽

SpringBoot入門十,新增junit單元測試

SpringBoot使用junit非常簡單,我們來看一下,首先說明,這裡使用的是springboot2.0.4的版本 一.pom.xml檔案開啟springboot測試包 <dependency> <groupId>org.springframework.boot

Junit單元測試+aop+spring+執行緒池,在進行Junit測試時切面執行緒池內呼叫的方法不執行

一、問題背景: 寫了一個切面,指向某service包下的所有類及方法,當該service包下方法被呼叫時切面執行,切面中用了執行緒池ExecutorService pool = Executors.newFixedThreadPool(5);執行緒池內呼叫了dao層的方法。 二、問題描述:單

SpringBoot專案,使用MockMvc做controller類的JUNIT單元測試

package hello; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.t

Spring mvc 之Junit 單元測試 Controller方法

               Springmvc 之Junit 單元測試 1.   首先引入測試的jar包。 1.1因為我用的ide是eclipse,現只介紹eclipse中junit的使用。首先引用eclipse中自帶的junit, 方法: 右鍵專案—>proper

JUnit單元測試獲取bean

一、使用註解@Autowired注入bean package test; import java.util.List; import org.junit.Test; import org.juni

Myeclipse進行JUnit單元測試

最近學習了在myeclipse中進行單元測試,寫點東西總結總結。 JUnit單元測試: 測試物件為一個類中的方法。 juint不是javase中的部分,所以必須匯入jar包,但是myeclips

IDEA建立單元測試過程 JUnit

1、在src同級別下創意一個test目錄2、右鍵這個test資料夾,設定為測試專用資料夾,然後在在下面建立一個java目錄,根據你的需求,多級建目錄3、選擇一個類 比如xxxServiceImpl, xxDaoImpl然後郵件,選擇goto -- test4、建立一個新的5、

關於junit單元測試的注入錯誤

之前寫的一個專案,在做單元測試的時候,用了service來儲存資料,然後就發現了一個錯誤:spring的注入錯誤,我在service類上加了component並且在spring的component-scan也配置了相應的路徑,要注入的東西也都加了@Resource,在測試

JUnit單元測試的setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()方法小結

編寫JUnit單元測試的時候,會用到setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()這四個方法,例如用eclipse新建一個junit test case的時候,就會有如下圖1的視窗讓你去選擇使用哪些方

【解決】Junit單元測試出現的報錯

at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.de

突然發現junit單元測試報錯竟然與類的有參構造有關

java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=test1], {ExactMatcher:fDisplayName=test1(com.test.User)], {LeadingIdentifierMatche

【Android進階】Junit單元測試環境搭建以及簡單有用

rar theme 選擇 http 技術分享 才幹 ack package family 單元測試的目的 首先。Junit單元測試要實現的功能,就是用來測試寫好的方法是否可以正確的運行,一般多用於對業務方法的測試。 單元測試的環境配置 1.在Andro