java springboot在当前测试类中添加临时属性 不影响application和其他范围

目前 我们的属性基本都写在 application.yml 里面了

但是 如果 我们只是想做一下临时变量的测试 有没有办法实现呢?

显然是有的

这里 我们还是先在application.yml中去写一个 test属性 下面加个prop

然后 我们尝试在测试类中 获取一下这个属性

直接用 Value 读取属性 然后 在函数中输出就好了

然后 我们右键测试方法 选择运行

这样 我们的值就被读取到了

然后 我们在配置文件中 将这个内容去掉

这里 我们直接在测试类中 用SpringBootTest声明就好

java 复制代码
package com.example.webdom;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(properties = {"test.prop=testValue1"})
public class WebDomApplicationTests {

    @Value("${test.prop}")
    private String Data;

    @Test
    void contextLoads() {
        System.out.println(Data);
    }

}

然后 我们右键运行 这里 也是被正确输出了

然后 如果 application 和当前 配置的临时 都设置了同一个 用谁的?

临时属性优先级高

例如 都设置了 data 配置文件 1 当前测试类 临时属性 2 则 在当前测试类拿到的是 2

然后 临时属性 还有一种写法

我们将测试类代码改成这样

java 复制代码
package com.example.webdom;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(args = {"--test.prop=testValue2"})
public class WebDomApplicationTests {

    @Value("${test.prop}")
    private String Data;

    @Test
    void contextLoads() {
        System.out.println(Data);
    }

}

args 注意 属性名 前面要加 --

运行之后 输出正常

然后 这时 大家都会想花活了 args 和 properties同时设置了 谁的优先级高?

args优先级高啊 直接回答了

相关推荐
高山上有一只小老虎几秒前
构造A+B
java·算法
学困昇2 分钟前
C++中的异常
android·java·c++
MC丶科17 分钟前
Java设计模式漫画英雄宇宙-工厂模式 —Factory博士的“超级英雄制造机”!
java·设计模式·漫画
q***318324 分钟前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
虎子_layor26 分钟前
告别Redis瓶颈:Caffeine本地缓存优化实战指南
java·后端
q***985229 分钟前
什么是Spring Boot 应用开发?
java·spring boot·后端
带刺的坐椅29 分钟前
Solon AI 开发学习4 - chat - 模型实例的构建和简单调用
java·ai·chatgpt·solon
hadage23332 分钟前
--- JavaScript 的一些常用语法总结 ---
java·前端·javascript
合作小小程序员小小店37 分钟前
桌面安全开发,桌面二进制%恶意行为拦截查杀%系统安全开发3.0,基于c/c++语言,mfc,win32,ring3,dll,hook,inject,无数据库
c语言·开发语言·c++·安全·系统安全
合作小小程序员小小店37 分钟前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#