SpringBoot 添加临时属性--也叫加载测试专用属性,加载测试临时属性,应用于小范围测试环境

方式1:

最原始的方法是通过yml的配置文件读取属性

properrties.yml
test:
  prop: only for test
测试
@ContextConfiguration(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class BeanTest {

    @Value("${test.prop}")
    private String prop;
    @Test
    public void test(){
        System.out.println(prop);
    }
}
控制台输出

only for test

方式2:

通过注解

SpringBootTest(properties = {"test.prop=这个属性会覆盖yam文件中对应的属性"})

properties属性可以为当前测试用例添加临时的属性配置

 2.1 yml文件此时没有这个属性,会读取注解中的properties

 2.2 yml文件中有这个属性,会被覆盖,仍然读取properties中的属性

优势:比多环境开发中的影响范围更小,仅对当前测试类有效

测试:

@ContextConfiguration(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(properties = {"test.prop=这个属性会覆盖yam文件中对应的属性"})

public class BeanTest {
    

    @Value("${test.prop}")
    private String prop;
    @Test
    public void test(){
     
        System.out.println(prop);
    }
}
控制台输出

test.prop=这个属性会覆盖yam文件中对应的属性

方式3:

通过注解

SpringBootTest(args = {"--test.prop=这个属性会覆盖yam文件中对应的属性"})

args属性可以为当前测试用例添加命令行参数

 3.1 yml文件此时没有这个属性,会读取注解中的args

 3.2 yml文件中有这个属性,会被覆盖,仍然读取args中的属性

测试:

@ContextConfiguration(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(args = {"--test.prop=djfkasdjoifads"})
public class BeanTest {
    

    @Value("${test.prop}")
    private String prop;
    @Test
    public void test(){
     
        System.out.println(prop);
    }
}
控制台输出

djfkasdjoifads

方式4

通过注解

@SpringBootTest(args = {"--test.prop=我是arg,优先级最高,我叫命令行参数"},properties = {"test.prop=这个属性会覆盖yam文件中对应的属性"})

properties属性可以为当前测试用例添加临时的属性配置

args属性可以为当前测试用例添加命令行参数

properties  args同时存在 args的优先级更高

 4.1 yml文件此时没有这个属性,会读取注解中的args

4.2 yml文件中有这个属性,会被覆盖,仍然读取args 中的属性

4.3 properties有这个属性,会被覆盖,仍然读取args 中的属性

测试:

@ContextConfiguration(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(args = {"--test.prop=我是arg,优先级最高,我叫命令行参数"},properties = {"test.prop=这个属性会覆盖yam文件中对应的属性"})
public class BeanTest {
    

    @Value("${test.prop}")
    private String prop;
    @Test
    public void test(){
     
        System.out.println(prop);
    }
}
控制台输出

我是arg,优先级最高,我叫命令行参数

方式5:

临时bean

@Configuration
public class Config {
    @Bean
    public String msg(){
        return "bean msg";
    }
}

测试:

@ContextConfiguration(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@Import(Config.class)
public class ConfigTest {
    @Autowired
    private String msg;
    @Test
    public void test(){
        System.out.println(msg);
    }
}
控制台输出

bean msg
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值