Situación: Tengo una clase de implementación de servicio anotada con @Service con acceso al archivo de propiedades.Cómo acceder al objeto Spring @Service desde la prueba jUnit
@Service("myService")
public class MySystemServiceImpl implements SystemService{
@Resource
private Properties appProperties;
}
Las propiedades del objeto se configuran a través de config-file. applicationContext.xml
<util:properties id="appProperties" location="classpath:application.properties"/>
Quiero probar algunos métodos de esta aplicación.
Pregunta: ¿Cómo acceder a MySystemServiceImpl-object desde la clase de prueba de manera que Properties appProperties se inicialice correctamente?
public class MySystemServiceImplTest {
//HOW TO INITIALIZE PROPERLY THROUGH SPRING?
MySystemServiceImpl testSubject;
@Test
public void methodToTest(){
Assert.assertNotNull(testSubject.methodToTest());
}
}
no puedo sencillo crear nuevos MySystemServiceImpl - que los métodos que utilizan appProperties lanza NullPointerException. Y no puedo inyectar propiedades directamente en el objeto; no hay un método setter apropiado.
sólo hay que poner medidas correctas aquí (gracias a @NimChimpsky de respuesta):
copié application.properties bajo prueba/dir recursos.
He copiado applicationContext.xml en test/resources dir. En el contexto de aplicación agrego nuevo bean (definición de propiedades de la aplicación ya está aquí):
<bean id="testSubject" class="com.package.MySystemServiceImpl">
modifiqué clase de prueba de tal manera:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/applicationContext.xml"}) public class MySystemServiceImplTest { @Autowired MySystemServiceImpl testSubject; }
Y esto hace el truco - ahora en mi clase de prueba totalmente funcional objeto está disponible
Gracias, ayuda mucho. – dim1902