Я использую Spring 3, Hibernate 3 в моем проекте.Но я не могу проверить его с помощью JUnit 4.
Вот мой класс Test:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:WebRoot/WEB-INF/applicationContext.xml"})
public class UserDaoTestCase extends AbstractJUnit4SpringContextTests {
@Autowired
private UserDao userDao;
@Test
public void testSimple() {
// do some tests...
}
// setters and getters
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
Я запускаю этот тест и всегда получаю это исключение:
java.lang.IllegalStateException: не удалось загрузить ApplicationContext по адресу org.springframework.test.context.TestContext.getApplicationContext (TestContext.java:308) по адресу org.springframework.test.context.support.DependencyInpeneTenceTecence109) по адресу org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance (DependencyInjectionTestExecutionListener.java:75) по адресу org.springframework.test.context.TestContextManager.prestxt.meg.traf.tg_t_p_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_tr_t_t_t_t_t_t_t_t_t_t_p),l.ReflectiveCallable.run (ReflectiveCallable.java:15) в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock (SpringJUnit4ClassRunner.java:303) в org.springfunitUntJava: 240) в org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:50) в org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:193) в org.junitRunners.(ParentRunner.java:52) в org.junit.runners.ParentRunner.runChildren (ParentRunner.java:191) в org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) в org.junit.Runner.Parent$ 2RunAfterTestClassCallbacks.java:70) в org.junit.runners.ParentRunner.run (ParentRunner.Java: 236) в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:180) в org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.Unit.Tj.eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution.java:38) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:467lse) .j.j..internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:683) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:390) в org.jtlin.runner.RemoteTestRunner.main (RemoteTestRunner.java:197) Причина: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'sessionFactory', определенным в URL [file: WebRoot / WEB-INF / applicationContext.xml]: Вызов метода init не выполнен;Вложенное исключение: org.hibernate.HibernateException: невозможно получить фабрику проверки компонентов по умолчанию в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.ort.Ab..doCreateBean (AbstractAutowireCapableBeanFactory.java:519) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.291) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetjean.Fean (28)org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletAbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:895) по адресу org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:425) по адресу org.springframework.xt.er.teg.textв org.springframework.test.context.support.AbstractGenericContextLoader.loadContext (AbstractGenericContextLoader.java:1) в org.springframework.test.context.TestContext.loadApplicationContext (TestContext.xtxt.tube.jpg):.getApplicationContext (TestContext.java:304) ... еще 24 Причина: org.hibernate.HibernateException: Невозможно получить Bean Va по умолчаниюфабрика lidation по адресу org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL (BeanValidationActivator.java:127) по адресу org.hibernate.cfg.Configuration.applyBeanValidationConstraintsOnDDL (Configuration.java.Conf..java: 1654) в org.hibernate.cfg.Configuration.secondPassCompile (Configuration.java:1445) в org.hibernate.cfg.Configuration.buildMappings (Configuration.java:1375) в org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory (LocalSessionFactoryBean.java:717) при org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet (AbstractSessionFactoryBean.java:211) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1469) в орг.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1409) ... еще 37 Причина: java.lang.reflect.lang.reflect.Method.invoke (Method.java:597) в org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL (BeanValidationActivator.java:118) ... еще 45 Причина: org.hibernate.HibernateException Исключение:ValidatorFactory по умолчанию в org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory (TypeSafeActivator.java:383) в org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDavax.java: ja ....validation.ValidationException: Невозможно создать экземпляр конфигурации.в javax.validation.Validation $ GenericBootstrapImpl.configure (Validation.java:272) в javax.validation.Validation.buildDefaultValidatorFactory (Validation.java:111) в org.hibernate.cfg.beanvalidatoraFid.Fid.Fid.FaFF) ... еще 51 причина: java.lang.NullPointerException в java.util.ResourceBundle.getBundle (ResourceBundle.java:960) в org.hibernate.validator.engine.ResourceBundleMessageInterpolator.loadBundle (ResourceBundle2essj.gt).hibernate.validator.engine.ResourceBundleMessageInterpolator.getFileBasedResourceBundle (ResourceBundleMessageInterpolator.java:182) при org.hibernate.validator.engine.ResourceBundleMessageInterpolator. (ResourceBundleMessageInterpolator.java:81) при org.hibernate.validator.engine.ResourceBundleMessageInterpolator. (ResourceBundleMessageInterpolator.java: 73) в org.hibernate.validator.engine.ConfigurationImpl. (ConfigurationImpl.java:57) вorg.hibernate.validator.HibernateValidator.createGenericConfiguration (HibernateValidator.java:43) в javax.validation.Validation $ GenericBootstrapImpl.configure (Validation.java:269) ... еще 53
101 - это ID 1011MyEclipse 9, и я использую библиотеки JavaEE 6.
Я думаю, что мой applicationContext.xml в порядке, потому что он работает нормально, когда я запускаю этот проект в tomcat, без исключений.
Вотмоего компонента SessionFactory в applicationContext.xml:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="c3p0DataSource" />
<property name="packagesToScan">
<list>
<value>com.myproject.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
Как правильно выполнять тесты с использованием JUnit 4?