我正在尝试为我的程序中用于验证表单的简单 bean 编写单元测试。bean 带有注释,@Component并具有一个使用初始化的类变量
@Component
@Value("${this.property.value}") private String thisProperty;
我想为此类中的验证方法编写单元测试,但是,如果可能的话,我想在不使用属性文件的情况下这样做。我的理由是,如果我从属性文件中提取的值发生变化,我希望这不会影响我的测试用例。我的测试用例是测试验证值的代码,而不是值本身。
有没有办法在我的测试类中使用 Java 代码来初始化 Java 类并填充该类中的 Spring @Value 属性,然后使用它进行测试?
我确实发现这个How To似乎很接近,但仍然使用属性文件。我宁愿这一切都是Java代码。
如果可能的话,我会尝试在没有 Spring Context 的情况下编写这些测试。如果你在没有 spring 的测试中创建这个类,那么你可以完全控制它的字段。
要设置@value字段,您可以使用 Springs ReflectionTestUtils- 它有一种setField设置私有字段的方法。
@value
ReflectionTestUtils
setField
@see JavaDoc: ReflectionTestUtils.setField(java.lang.Object, java.lang.String, java.lang.Object)