[笔记]Springboot入门《五》之单元测试读取配置

简介: [笔记]Springboot入门《五》之单元测试读取配置

前言

  • junit载入类
  • 配置类读取配置文件
  • .properties
  • .yml

实现

junit测试

pom文件

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 自定义配置需要的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

AppTest.java文件

import static org.junit.Assert.assertTrue;
import com.ruoyi.iot.aliyun.config.AliyunUserConstant;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
 * Unit test for simple App.
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AliyunUserConstant.class)
public class AppTest
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        System.out.println(AliyunUserConstant.accessKey);
        assertTrue( true );
    }
}

读取配置yml/properties

方法一 @PropertySource + properties

aliyun-config.properties文件

aliyun.accessKey=123
aliyun.accessSecret=123
aliyun.iotInstanceId=123
aliyun.clientId=123
aliyun.host=123

AliyunUserConstant.java文件

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource(value = {"classpath:aliyun-config.properties"})
public class AliyunUserConstant {
    public static String regionId = "";
    //public static String accessKey = "";
    public static String accessKey = "";
    public static String accessSecret = "";
    public static String productKey = "";
    public static String deviceName = "";
    public static String instanceId = "";
    public static String clientId = "";
    public static String host = "";
    @Value("${aliyun.regionId}")
    public void setRegionId(String regionId) {
        AliyunUserConstant.regionId = regionId;
    }
    @Value("${aliyun.accessKey}")
    public void setAccessKey(String accessKey) {
        AliyunUserConstant.accessKey = accessKey;
    }
    @Value("${aliyun.accessSecret}")
    public void setAccessSecret(String accessSecret) {
        AliyunUserConstant.accessSecret = accessSecret;
    }
    @Value("${aliyun.productKey}")
    public void setProductKey(String productKey) {
        AliyunUserConstant.productKey = productKey;
    }
    @Value("${aliyun.deviceName}")
    public void setDeviceName(String deviceName) {
        AliyunUserConstant.deviceName = deviceName;
    }
    @Value("${aliyun.instanceId}")
    public void setInstanceId(String instanceId) {
        AliyunUserConstant.instanceId = instanceId;
    }
    @Value("${aliyun.clientId}")
    public void setClientId(String clientId) {
        AliyunUserConstant.clientId = clientId;
    }
    @Value("${aliyun.host}")
    public void setHost(String host) {
        AliyunUserConstant.host = host;
    }
}

方法二 @PropertySource + yml + YamlPropertySourceFactory

aliyun:
  accessKey: 123
  accessSecret: 123
  iotInstanceId: 123
  clientId: 123
  host: 123

AliyunUserConstant .java文件

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
//以下ok
@PropertySource(value = {"classpath:application-aliyun-config.yml"},factory = YamlPropertySourceFactory.class)
public class AliyunUserConstant {
    public static String regionId = "cn-shanghai";
    //public static String accessKey = "xxxxxx";
    public static String accessKey = "";
    public static String accessSecret = "xxxxxx";
    public static String productKey = "hf3fsfEX3CF";
    public static String deviceName = "test_device";
    public static String instanceId = "iot-06z00fu20bxiv4s";
    public static String clientId = "123456";
    public static String host = "iot-06z00fu20bxiv4s.amqp.iothub.aliyuncs.com";
    @Value("${aliyun.regionId}")
    public void setRegionId(String regionId) {
        AliyunUserConstant.regionId = regionId;
    }
    @Value("${aliyun.accessKey}")
    public void setAccessKey(String accessKey) {
        AliyunUserConstant.accessKey = accessKey;
    }
    @Value("${aliyun.accessSecret}")
    public void setAccessSecret(String accessSecret) {
        AliyunUserConstant.accessSecret = accessSecret;
    }
    @Value("${aliyun.productKey}")
    public void setProductKey(String productKey) {
        AliyunUserConstant.productKey = productKey;
    }
    @Value("${aliyun.deviceName}")
    public void setDeviceName(String deviceName) {
        AliyunUserConstant.deviceName = deviceName;
    }
    @Value("${aliyun.instanceId}")
    public void setInstanceId(String instanceId) {
        AliyunUserConstant.instanceId = instanceId;
    }
    @Value("${aliyun.clientId}")
    public void setClientId(String clientId) {
        AliyunUserConstant.clientId = clientId;
    }
    @Value("${aliyun.host}")
    public void setHost(String host) {
        AliyunUserConstant.host = host;
    }
}

YamlPropertySourceFactory.java文件

import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;
import java.io.IOException;
/**
 * @author Erwin Feng
 * @since 2020/8/13
 */
public class YamlPropertySourceFactory implements PropertySourceFactory {
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        // 返回 yaml 属性资源
        return new YamlPropertySourceLoader()
                .load(resource.getResource().getFilename(), resource.getResource())
                .get(0);
    }
}

方法三 @ConfigurationProperties + yml

方法四 @ActiveProfiles + yml

参考

@ActiveProfiles(value = "aliyun-config") // 载入application-aliyun-config.yml文件

总结


相关文章
|
2月前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
53 3
SpringBoot入门 - 对Hello world进行MVC分层
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
104 3
SpringBoot入门 - 添加内存数据库H2
|
4天前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
25 10
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
67 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java 应用服务中间件 数据库连接
SpringBoot入门 - SpringBoot HelloWorld
SpringBoot入门 - SpringBoot HelloWorld
SpringBoot入门 - SpringBoot HelloWorld
|
2月前
|
Java Spring
SpringBoot入门 - 定制自己的Banner
SpringBoot入门 - 定制自己的Banner
30 2
SpringBoot入门 - 定制自己的Banner
|
2月前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
66 1
SpringBoot入门(7)- 配置热部署devtools工具
|
2月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
20 1
 SpringBoot入门(3) - 对Hello world进行MVC分层
|
1月前
|
安全 Java 测试技术
springboot之SpringBoot单元测试
本文介绍了Spring和Spring Boot项目的单元测试方法,包括使用`@RunWith(SpringJUnit4ClassRunner.class)`、`@WebAppConfiguration`等注解配置测试环境,利用`MockMvc`进行HTTP请求模拟测试,以及如何结合Spring Security进行安全相关的单元测试。Spring Boot中则推荐使用`@SpringBootTest`注解简化测试配置。
|
2月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
60 4