Spring Boot教程14——集成测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot教程14——集成测试相关的知识,希望对你有一定的参考价值。

集成测试一般需要来自不同层的不同对象的交互,如数据库、网络连接、IOC容器等。

Spring通过Spring TestContext Framework对集成测试提供顶级支持。它不依赖于特定的测试框架,即可使用JUnit,也可使用TestNG。

基于Maven构建的项目默认有关于测试的目录:src/test/java(测试代码)、src/test/resources(测试资源),区别于src/main/java(项目源码)、src/main/resources(项目资源)。

Spring提供了一个SpringJUnit4ClassRunner类,它提供了Spring TestContext Framework的功能。通过@ContextConfiguration来配置Application Context,通过@ActiveProfiles确定活动的profile。

在使用了Spring测试后,我们前面的例子的“运行”部分都可以用Spring测试来检验功能能否正常运作。

示例

1>.在pom.xml中增加Spring测试的依赖

<!-- Spring test 支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>

 

2>.业务代码(src/main/java)

package com.wisely.highlight_spring4.ch3.fortest;

public class TestBean {
    private String content;

    public TestBean(String content) {
        super();
        this.content = content;
    }

    public String getContent() {
        return content;
    }

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

 

3>.配置类(src/main/java)

package com.wisely.highlight_spring4.ch3.fortest;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
public class TestConfig {
    @Bean
    @Profile("dev")
    public TestBean devTestBean() {
        return new TestBean("from development profile");
    }

    @Bean
    @Profile("prod")
    public TestBean prodTestBean() {
        return new TestBean("from production profile");
    }

}

 

4>.测试(src/test/java)

package com.wisely.highlight_spring4.ch3.fortest;


import org.junit.Assert;
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;

@RunWith(SpringJUnit4ClassRunner.class) //SpringJUnit4ClassRunner在JUnit环境下提供Spring TestContext Framework的功能
@ContextConfiguration(classes = {TestConfig.class}) //@ContextConfiguration用来加载配置ApplicationContext,其中classes属性用来加载配置类
@ActiveProfiles("prod") //@ActiveProfiles用来声明活动的profile
public class DemoBeanIntegrationTests {
    @Autowired //可使用普通的@Autowired注入Bean
    private TestBean testBean;

    @Test //测试代码,通过JUnit的Assert来校验结果是否和预期一致
    public void prodBeanShouldInject(){
        String expected = "from production profile";
        String actual = testBean.getContent();
        Assert.assertEquals(expected, actual);
    }

    
}

 

以上是关于Spring Boot教程14——集成测试的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot中多war应用的集成测试

Spring Boot / Spring数据集成测试

spring boot集成mybatis框架

Spring Boot系列教程七:Spring boot集成MyBatis

如何在 Spring Boot 集成测试中使用嵌入式 MongoDB

spring boot 测试