gpt4 book ai didi

java - 在集成测试中重写@Value

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:28 25 4
gpt4 key购买 nike

对于我的一个 Spring bean(比如 Application 类),我使用 @Value 注释从属性文件 (prop.properties) 中获取属性 (my.property.flag=true/false) 的值。这工作得很好。

我需要编写一个集成测试(比如 ApplicationIt 类),我需要在其中测试属性的两个值,即 true 和 false。

在我的属性文件中,属性的值设置为 true。是否可以从我的集成测试中将值动态设置为 false?

例如,

prop.properties:

    my.property.flag=true

应用类文件:

    @Component
class Application {
//This value is fetched from properties file
//the value is set to true.
@Value(${my.property.flag})
private String isTrue;
......
..........
}

集成测试:

    class ApplicationIT {
//how can I set the value of isTrue here to false?
}

最佳答案

您可以按如下方式在测试类上指定测试属性:

@RunWith(SpringRunner.class)
@TestPropertySource(properties = {"spring.main.banner-mode=off", "my.property.flag=false"})
public class MyTest {

由于 Spring 具有整个属性覆盖层次结构,因此效果很好,缺点是您需要为不同的值单独测试类。如果您使用的是 Spring Boot,还有另一个注解可以提供相同的功能,但也有更多用于配置测试环境的选项。示例:

@SpringBootTest(properties = {"spring.main.banner-mode=off", "my.property.flag=false"})

同样,您将需要单独的测试类来处理硬编码的测试属性。

关于java - 在集成测试中重写@Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44639941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com