Estoy intentando escribir clase de prueba para el siguiente métodoprimavera inyección en Mockito
public class CustomServiceImpl implements CustomService {
@Value("#{myProp['custom.url']}")
private String url;
@Autowire
private DataService dataService;
estoy usando el valor url inyectado en uno de los métodos de la clase. Para probar esto que he escrito una clase 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);
}
}
En applicationContext-test.xml Estoy cargando el archivo de propiedades utilizando
<util:properties id="myProp" location="myProp.properties"/>
Pero el valor url no está consiguiendo cargado en la CustomService en correr la prueba. Me preguntaba si hay alguna forma de hacerlo.
Gracias
Si se está burlando de 'CustomService', ¿cómo se usa' CustomServiceImpl'? Eso no tiene sentido. – skaffman
Estoy usando CustomeServiceImpl. Actualizado el código ¿Cómo puedo simular el valor de url que debe leerse en el archivo de propiedades? – rohit
Tal como está ahora, no está usando Spring para establecer el valor de servicio personalizado, estableciendo el valor manualmente en el método setup() con este código: 'customService = new CustomServiceImpl();' – DwB