我試圖寫的測試類以下方法春天值注入的Mockito
public class CustomServiceImpl implements CustomService {
@Value("#{myProp['custom.url']}")
private String url;
@Autowire
private DataService dataService;
我使用這個類中的方法之一注入url值。 爲了測試這一點,我已經寫了一個JUnit類
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-test.xml" })
public CustomServiceTest{
private CustomService customService;
@Mock
private DataService dataService;
@Before
public void setup() {
customService = new CustomServiceImpl();
Setter.set(customService, "dataService", dataService);
}
...
}
public class Setter {
public static void set(Object obj, String fieldName, Object value) throws Exception {
Field field = obj.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
field.set(obj, value);
}
}
在的applicationContext-的test.xml我加載使用
<util:properties id="myProp" location="myProp.properties"/>
但是URL值的屬性文件未在CustomService得到加載在運行測試。 我想知道是否有這樣做完成。
謝謝
如果你正在模擬'CustomService',那麼如何使用'CustomServiceImpl'?這沒有意義。 – skaffman 2012-02-09 11:26:51
我正在使用CustomeServiceImpl。更新了代碼。我怎樣才能嘲笑需要從屬性文件中讀取的url的值? – rohit 2012-02-09 13:43:46
就像現在這樣,你沒有使用Spring來設置customService值,你使用下面的代碼在setup()方法中手動設置值:'customService = new CustomServiceImpl();' – DwB 2012-02-09 13:54:00