Ste*_*ers 6 java junit spring integration-testing dependency-injection
我有一个使用从属性注入的字段的类@Value:
public class MyClass {
@Value(${property.key})
private String filePath;
...
Run Code Online (Sandbox Code Playgroud)
我的集成测试需要更改filePath为指向一些不同的文件。
我尝试在调用方法之前使用反射来设置它:
public class MyClassIT {
@Autowired MyClass myClass;
@Test
public void testMyClassWithTestFile1 {
ReflectionTestUtils.setField(myClass, "filePath", "/tests/testfile1.csv");
myClass.invokeMethod1();
...
Run Code Online (Sandbox Code Playgroud)
但是当第一个方法被调用时,@Value注入开始并改变刚刚设置的值。谁能建议如何解决这个问题或替代方法?
注意:我需要 Spring 来管理类(因此注入了其他依赖项),并且使用不同测试文件的同一类需要其他测试。
只需使用一个setter。无论如何,通常最好使用 setter 注入而不是字段注入。更好的是,完全转换为构造函数和 setter 注入,您通常可以用模拟替换 Spring 测试上下文。
| 归档时间: |
|
| 查看次数: |
3779 次 |
| 最近记录: |