我有一類使用@Value
屬性注入字段:如何重寫在Spring中由@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管理類(因此注入其他依賴項),並且使用不同測試文件的同一類需要其他測試。
謝謝,我也簡要地考慮使用一個二傳手,唯一這讓我擔心我們已經在其他地方使用了直接字段注入,所以這將是違反約定和「改變代碼以適應測試」的輕微情況 - 但認爲它可能是最好的方式。 –
@SteveChambers幸運的是,Spring可以很容易地從字段注入中逐步移植,除非在奇怪的配置類中使用它,這是最佳實踐。 – chrylis