Perché il mio nulla di fagioli?
-
25-09-2019 - |
Domanda
Sto cercando di imparare a utilizzare applicationContext. Il mio obiettivo è quello di scambiare un repository di dati finto per una reale quando si utilizza mio test di unità. Io non voglio fare questo in modo esplicito, voglio fare questo con l'iniezione di dipendenza.
Così come un semplice test prima di fare le cose complicate, sto semplicemente cercando di ottenere un fagiolo dalla mia applicationContext.xml. Da quello che ho letto, questo dovrebbe funzionare:
@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {
@Resource
CompanyResult resultBean;
@Test
public void shouldAddResults() {
assertEquals(resultBean.getCompanyName(), "Microsoft");
Ma la mia resultBean è sempre nullo. Ecco il mio applicationContext.xml, che si trova sotto WebContent / WEB-INF:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="resultBean" name="resultBean" class="com.trgr.cobalt.company.domain.CompanyResult">
<property name="companyName">
<value>Microsoft</value>
</property>
</bean>
</beans>
Allora, perché è il mio resultBean sempre nullo? Che cosa ho fatto in modo errato?
Soluzione
Ti manca un'annotazione @RunWith(SpringJUnit4ClassRunner.class)
:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {
@Resource
CompanyResult resultBean;
@Test
public void shouldAddResults() {
assertEquals(resultBean.getCompanyName(), "Microsoft");
}
}
tra , nel campione, WebContent/WEB-INF
non è il luogo adatto per applicationContext.xml
.
Se si specifica @ContextConfiguration(locations = "/applicationContext.xml")
allora Primavera cercherà applicationContext.xml
alla radice del classpath, non in WebContent/WEB-INF
(JUnit è al 100% a conoscenza del fatto che si tratta di un'applicazione web).
Per ulteriori informazioni , vedere Primavera documentazione di riferimento .