首页 > 代码库 > Spring Boot教程14——集成测试

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;@Configurationpublic 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用来声明活动的profilepublic 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——集成测试