问题描述
我正在尝试为我的程序中用于验证表单的简单bean编写单元测试。 bean使用 @Component
进行注释,并且有一个使用 @Value($ {this.property.value})私有化的类变量String thisProperty;
我想为这个类中的验证方法编写单元测试,但是,如果可能的话我想这样做不使用属性文件。我的理由是,如果我从属性文件中提取的值发生变化,我希望这不会影响我的测试用例。我的测试用例是测试验证值的代码,而不是值本身。
有没有办法在我的测试类中使用Java代码初始化Java类并在该类中填充Spring @Value属性然后用它来测试? / p>
我确实发现这个似乎很接近的但仍使用属性文件。我宁愿一切都是Java代码。
谢谢
如果可能,我会尝试在没有Spring Context的情况下编写这些测试。如果你在没有spring的测试中创建这个类,那么你可以完全控制它的字段。
设置 @value
字段你可以使用Springs - 它有一个方法设置私有字段。
@see
I'm trying to write a Unit Test for a simple bean that's used in my program to validate forms. The bean is annotated with @Component
and has a class variable that is initialized using @Value("${this.property.value}") private String thisProperty;
I would like to write unit tests for the validation methods inside this class, however, if possible I would like to do so without utilizing the properties file. My reasoning behind this, is that if the value I'm pulling from the properties file changes, I would like that to not affect my test case. My test case is testing the code that validates the value, not the value itself.
Is there a way to use Java code inside my test class to initialize a Java class and populate the Spring @Value property inside that class then use that to test with?
I did find this How To that seems to be close, but still uses a properties file. I would rather it all be Java code.
Thanks
If possible I would try to write those test without Spring Context. If you create this class in your test without spring, then you have full control over its fields.
To set the @value
field you can use Springs ReflectionTestUtils
- it has a method setField
to set private fields.
@see JavaDoc: ReflectionTestUtils.setField(java.lang.Object, java.lang.String, java.lang.Object)
这篇关于在单元测试期间填充Spring @Value的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!