Per rispondere a questa domanda dobbiamo ricapitolare le versioni Spring 2.x.
Se si desidera "autowire" un bean nella classe @BeforeTest
, è possibile utilizzare l'interfaccia ApplicationContext
. Vediamo un esempio:
@BeforeClass
public static void init() {
ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
EntityRepository dao2 = (EntityRepository) context.getBean("dao");
List<EntityRepository> all = dao2.getAll();
Assert.assertNotNull(all);
}
Cosa sta succedendo: utilizzando il ClassPathXmlApplicationContext
stiamo istanziare tutti i fagioli contenuti nel file application-context.xml
.
Con context.getBean()
si legge il bean specificato (deve corrispondere al nome del bean!); e quindi puoi usarlo per la tua inizializzazione.
Si dovrebbe dare al bean un altro nome (questo è il dao2
!) Altrimenti Spring normale "autowired" non può funzionare sul bean predefinito.
Come nota a margine, se il test estende AbstractTransactionalJUnit4SpringContextTests
, è possibile eseguire l'inizializzazione utilizzando executeSqlScript(sqlResourcePath, continueOnError)
; metodo, in modo da non dipendere da una classe/metodo che devi anche testare separatamente.
Questo post del blog può aiutare - http: //saltnlight5.blogspot .in/2012/09/enhancing-spring-test-framework-with.html – Mithun