Estou construindo um sistema bobo aqui em casa e comecei a implementar alguns testes automatizados no sistema. A minha idéia é aproveitar que uso o hibernate e o spring e fazer os testes usando essas ferramentas para diminuir a duplicação de código. Criei uma classe BaseTest que usa o DBUnit pois minha intenção também é usar o banco de dados. No método setUp eu criaria um contexto do Spring que já configuraria o Hibernate e tudo mais. A classe está mais ou menos assim…
[code]public abstract class BaseTest extends JdbcBasedDBTestCase {
private ApplicationContext context;
public ApplicationContext getContext() {
if (context == null) {
context = new ClassPathXmlApplicationContext("applicationContext.xml", this.getClass());
}
return context;
}[/code]
[code]
hibernate.cfg.xml
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean> [/code]
Meu problema é que, quando executo o método getContext do BaseTest, o sistema retorna o seguinte erro:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:109)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:423)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:353)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:197)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:172)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:158)
at femass.geac.teste.BaseTest.getContext(BaseTest.java:21)
Eu uso a estrutura padrão de arquivos do Maven e o arquivo applicationContext.xml está no seguinte diretório:
src / test / resources / applicationContext.xml
src / test / resources / hibernate.cfg.xml
Se eu usar o caminho completo do arquivo e o FileSystemXmlApplicationContext o sistema funciona, mas ai eu iria fixar o caminho no padrão do Maven, coisa que deixaria o meu sistema “feio”.
Alguem tem alguma dica?