Я пытаюсь получить JUnit для запуска, но он продолжает бросать следующую ошибку:JUnit и Spring: Не удается найти persistence.xml - но она существует
class path resource [META-INF/persistence.xml] cannot be opened because it does not exist
Весь StackTrace можно найти здесь: http://codepad.org/OhlyjQKn. Это проект Spring, с Hibernate (также использующий JPA). Проект работает нормально - он не жалуется на все недостающие файлы при запуске его в обычном режиме (не работает тест JUnit)
Я пытаюсь запустить следующий тест:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/classes/applicationContext.xml",
"file:src/main/webapp/WEB-INF/config/spring-security.xml"})
public class KeyServiceTests {
@Test
public void testKeyCreation() {
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
KeyService keyService = (KeyService) context.getBean("keyService");
// Some testing goes on here
}
}
EntityManagerFactory в applicationContext.xml определяется следующим образом: (весь файл здесь: http://codepad.org/UrCtj0pW)
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="hsqldb-ds" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
</bean>
мой путь к классам является src/main/webapp/WEB-INF/classes
- который держит applicationContext.xml, а также META-INF/persistence.xml
persistence.xml определяется следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="hsqldb-ds" transaction-type="RESOURCE_LOCAL">
<description>HSQLDB Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:demodb" />
<property name="javax.persistence.jdbc.user" value="sa" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.transaction.flush_before_completion" value="true" />
</properties>
</persistence-unit>
Так да. Он не может найти persistence.xml, но он существует там, где он должен существовать (относительно пути к классам), и проект только жалуется на файл при запуске JUnit. Кто-нибудь знает, что происходит, или что я должен делать, чтобы JUnit работал правильно? Я новичок в использовании JUnit с Spring/Hibernate, поэтому я, вероятно, ошибаюсь.
Сердечные приветы