+-

我有一个类,使用@Value从属性注入一个字段:
public class MyClass {
@Value(${property.key})
private String filePath;
...
我的集成测试需要将filePath更改为指向某些不同的文件.
在调用方法之前,我尝试使用反射来设置它:
public class MyClassIT {
@Autowired MyClass myClass;
@Test
public void testMyClassWithTestFile1 {
ReflectionTestUtils.setField(myClass, "filePath", "/tests/testfile1.csv");
myClass.invokeMethod1();
...
但是当调用第一个方法时,@ Value注入将启动并更改刚刚设置的值.任何人都可以建议如何解决这个或另一种方法?
注意:我需要Spring来管理类(因此注入了其他依赖项),并且使用不同的测试文件需要对同一个类进行其他测试.
最佳答案
只需使用一个二传手.无论如何,通常最好使用setter注入而不是现场注入.更好的是,完全转换为构造函数和setter注入,通常可以用模拟替换Spring测试上下文.
点击查看更多相关文章
转载注明原文:如何在Spring中覆盖@Value注入的字段值? - 乐贴网