spring boot 单元测试与读取配置文件(application.yml)中的属性值

1、引入依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
</dependency>

2、配置文件(application.yml)中配置各个属性的值:

myProps: #自定义的属性和值
  simpleProp: simplePropValue
  arrayProps: 1,2,3,4,5
  listProp1:
    - name: Solin
      value: SolinValue
    - name: Tom
      value: TomValue
  listProp2:
    - config1Value1
    - config2Value2
  mapProps:
    key1: value1
    key2: value2

3、创建管理配置的实体类:

package Solin.controller;

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

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix="myProps",locations = "classpath:application.yml") //接收application.yml中的myProps下面的属性 
public class MyProps {
	private String simpleProp;
	private String[] arrayProps;
	private List<Map<String, String>> listProp1 = new ArrayList<Map<String, String>>(); //接收prop1里面的属性值
	private List<String> listProp2 = new ArrayList<String>(); //接收prop2里面的属性值
	private Map<String, String> mapProps = new HashMap<String, String>(); //接收mapProps里面的属性值
	
	public String getSimpleProp() {
		return simpleProp;
	}
	
	//String类型的一定需要setter来接收属性值;maps, collections不需要
	public void setSimpleProp(String simpleProp) {
		this.simpleProp = simpleProp;
	}
	
	public List<Map<String, String>> getListProp1() {
		return listProp1;
	}
	public List<String> getListProp2() {
		return listProp2;
	}

	public String[] getArrayProps() {
		return arrayProps;
	}

	public void setArrayProps(String[] arrayProps) {
		this.arrayProps = arrayProps;
	}

	public Map<String, String> getMapProps() {
		return mapProps;
	}

	public void setMapProps(Map<String, String> mapProps) {
		this.mapProps = mapProps;
	}
}

启动后,这个bean里面的属性就会自动接收配置的值了。


4、单元测试用例:

package Solin.controller;

import java.util.Arrays;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.fasterxml.jackson.core.JsonProcessingException;

import Solin.config.WebAppConfig;

@RunWith(SpringJUnit4ClassRunner.class)  
//@SpringBootTest(classes=WebAppConfig.class)// 指定spring-boot的启动类   
@SpringApplicationConfiguration(classes = WebAppConfig.class)// 1.4.0 前版本  注意启动类不要搞错了
public class MyPropsTest {
	@Autowired
	private MyProps myProps; 
	
	@Test
	public void propsTest() throws JsonProcessingException {
		System.out.println("simpleProp: " + myProps.getSimpleProp());
		System.out.println("arrayProps: " + Arrays.toString(myProps.getArrayProps()));
		System.out.println("listProp1: " + myProps.getListProp1());
		System.out.println("listProp2: " + myProps.getListProp2());
		System.out.println("mapProps: " + myProps.getMapProps());
	}
}

5、测试结果:

simpleProp: simplePropValue
arrayProps: [1, 2, 3, 4, 5]
listProp1: [{name=Solin, value=SolinValue}, {name=Tom, value=TomValue}]
listProp2: [config1Value1, config2Value2]
mapProps: {key1=value1, key2=value2}


6、可以看到,对spring-boot项目进行单元测试是件容易的事儿,需要添加spring-boot-starter-test依赖,然后 使用@RunWith和@SpringBootTest或@SpringApplicationConfiguration(1.4.0过期)注解,然后引入自己要测试的bean,调用指定方法进行测试即可。


转载自:http://blog.csdn.net/clementad/article/details/51970962


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值