小编典典

在单元测试期间填充 Spring @Value

all

我正在尝试为我的程序中用于验证表单的简单 bean 编写单元测试。bean 带有注释,@Component并具有一个使用初始化的类变量

@Value("${this.property.value}") private String thisProperty;

我想为此类中的验证方法编写单元测试,但是,如果可能的话,我想在不使用属性文件的情况下这样做。我的理由是,如果我从属性文件中提取的值发生变化,我希望这不会影响我的测试用例。我的测试用例是测试验证值的代码,而不是值本身。

有没有办法在我的测试类中使用 Java 代码来初始化 Java 类并填充该类中的 Spring @Value 属性,然后使用它进行测试?

我确实发现这个How
To
似乎很接近,但仍然使用属性文件。我宁愿这一切都是Java代码。


阅读 119

收藏
2022-04-11

共1个答案

小编典典

如果可能的话,我会尝试在没有 Spring Context 的情况下编写这些测试。如果你在没有 spring
的测试中创建这个类,那么你可以完全控制它的字段。

要设置@value字段,您可以使用 Springs
ReflectionTestUtils-
它有一种setField设置私有字段的方法。

@see JavaDoc: ReflectionTestUtils.setField(java.lang.Object,
java.lang.String, java.lang.Object)

2022-04-11