Situazione: Ho una classe di implementazione del servizio annotata con @Service con accesso al file delle proprietà.Come accedere all'oggetto Spring @Service da jUnit test
@Service("myService")
public class MySystemServiceImpl implements SystemService{
@Resource
private Properties appProperties;
}
L'oggetto proprietà è configurato tramite file di configurazione. applicationContext.xml
<util:properties id="appProperties" location="classpath:application.properties"/>
voglio provare alcuni metodi di questa implementazione.
Domanda: Come accedere all'oggetto MySystemServiceImpl dalla classe di test in modo che l'applicazione ProprietàProprietà venga inizializzata correttamente?
public class MySystemServiceImplTest {
//HOW TO INITIALIZE PROPERLY THROUGH SPRING?
MySystemServiceImpl testSubject;
@Test
public void methodToTest(){
Assert.assertNotNull(testSubject.methodToTest());
}
}
non posso semplice creare nuove MySystemServiceImpl - rispetto ai metodi che utilizzano AppProperties getta NullPointerException. E non posso iniettare direttamente le proprietà nell'oggetto - non esiste un metodo setter appropriato.
Basta mettere passaggi corretti qui (grazie a @NimChimpsky per risposta):
ho copiato application.properties in prova/risorse dir.
Ho copiato applicationContext.xml in test/risorse dir. Nel contesto di applicazione aggiungo nuovo bean (definizione delle proprietà dell'applicazione è già qui):
<bean id="testSubject" class="com.package.MySystemServiceImpl">
ho modificato classe di test in modo tale:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/applicationContext.xml"}) public class MySystemServiceImplTest { @Autowired MySystemServiceImpl testSubject; }
E questo rende il trucco - adesso nel mio classe di test oggetto completamente funzionale è disponibile
Grazie, aiuta molto. – dim1902