Spring高級話題-測試

一、關於Spring中的測試

在開發過程中開發人員會經常使用到兩種測試方式,單元測試和集成測試

  • 單元測試:只針對單一的類或方法,對運行環境沒有依賴
  • 集成測試:需要來自不同層的不同對象的交互,如數據庫,網絡連接,ioc容器等
    Spring通過Spring TestContext Framework對集成測試提供了頂級的支持

補充: 基於Maven構建的項目結構默認有關於測試的目錄:
測試代碼:src/test/java
測試資源:src/text/resources

二、如何使用Spring提供的測試功能

  1. 使用@RunWith註解,讓代碼運行於Spring測試環境(@RunWith就是一個運行器,SpringJUnit4ClassRunner.class提供了Spring TestContext Framework的功能)
  2. 使用@ContextConfiguration註解來配置應用容器
  3. 使用@ActiveProfiles來確定profile

三、testDemo

實體類

package com.cactus.demo.test;

/**
 * Created by liruigao
 * Date: 2019-12-09 14:04
 * Description:
 */


public class TestDemo {
    private String content;

    public TestDemo() {
    }

    public TestDemo(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

配置類

package com.cactus.demo.test;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * Created by liruigao
 * Date: 2019-12-09 14:05
 * Description:
 */

@Configuration
public class TestConfig {
    @Bean
    @Profile("dev")
    public TestDemo getDevBean() {
        return new TestDemo("I am dev testDemo");
    }

    @Bean
    @Profile("prod")
    public TestDemo getProdBean() {
        return new TestDemo("I am prod testDemo");
    }
}

測試運行類

package testdemo;

import com.cactus.demo.test.TestConfig;
import com.cactus.demo.test.TestDemo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * Created by liruigao
 * Date: 2019-12-09 14:10
 * Description:
 */

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
@ActiveProfiles("prod")
public class DemoTest {
    @Autowired
    private TestDemo testBean;

    @Test
    public void test() {
        String content = testBean.getContent();
        System.out.println(content);
    }
}

Result

I am prod testDemo
發佈了108 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章