Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring JUnit-java.lang.IllegalStateException:未能加载ApplicationContext_Java_Spring_Spring Mvc_Junit - Fatal编程技术网

Spring JUnit-java.lang.IllegalStateException:未能加载ApplicationContext

Spring JUnit-java.lang.IllegalStateException:未能加载ApplicationContext,java,spring,spring-mvc,junit,Java,Spring,Spring Mvc,Junit,我正试图为我的SpringMVC应用程序编写一个单元测试用例。我使用的是纯Java配置,没有XML 当我尝试运行我的测试类时,我得到了以下堆栈跟踪。这只是堆栈跟踪的一部分。完整跟踪太大,无法在堆栈溢出时发布 Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [/User

我正试图为我的SpringMVC应用程序编写一个单元测试用例。我使用的是纯Java配置,没有XML

当我尝试运行我的测试类时,我得到了以下堆栈跟踪。这只是堆栈跟踪的一部分。完整跟踪太大,无法在堆栈溢出时发布

Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [/Users/jkratz/Projects/knowledge-works/build/classes/main/org/ohiohighered/researchportal/core/persistence/UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory': : Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/ohiohighered/researchportal/core/config/PersistenceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.mybatis.spring.SqlSessionFactoryBean]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasource' defined in class path resource [org/ohiohighered/researchportal/core/config/PersistenceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: required key [jndi.datasource] not found; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/ohiohighered/researchportal/core/config/PersistenceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.mybatis.spring.SqlSessionFactoryBean]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasource' defined in class path resource [org/ohiohighered/researchportal/core/config/PersistenceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: required key [jndi.datasource] not found
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:368)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1111)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1006)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:220)
    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:615)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:465)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261)
    at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68)
    at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86)
    ... 28 more
Caused by: java.lang.IllegalStateException: required key [aysnc.executor.poolSize] not found
    at org.springframework.core.env.AbstractPropertyResolver.getRequiredProperty(AbstractPropertyResolver.java:160)
    at org.springframework.core.env.AbstractEnvironment.getRequiredProperty(AbstractEnvironment.java:541)
    at org.ohiohighered.researchportal.core.config.JobConfig.getAsyncExecutor(JobConfig.java:26)
    at org.springframework.scheduling.annotation.AbstractAsyncConfiguration.setConfigurers(AbstractAsyncConfiguration.java:69)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:642)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    ... 53 more
这是我的测试课:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class CampusParserTest {

    @Autowired
    ApplicationContext applicationContext;

    @Test
    public void testParser() {

        CampusParser campusParser = new CampusParser();
        campusParser.parse();
    }
}
出于某种原因,它似乎没有实例化我的任何bean或查找任何属性/配置文件。这是我在Tomcat8上运行的SpringMVC应用程序。数据源也是从JNDI加载的,我猜这将是一个问题,但一次只能做一件事

更新:这是我的PersistenceConfig。应用程序在Tomcat 8中加载并运行良好

@Configuration
@EnableTransactionManagement
@MapperScan("org.app.researchportal.core.persistence")
public class PersistenceConfig {

    @Autowired
    Environment environment;

    /**
     * Gets the datasource from the container using JNDI and returns it
     *
     * @return {@link DataSource}
     */
    @Bean(name = "datasource")
    public DataSource dataSource() {
        JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
        dsLookup.setResourceRef(true);
        return dsLookup.getDataSource(environment.getRequiredProperty("jndi.datasource"));
    }

    /**
     * Creates and returns the MyBatis SqlSessionFactoryBean
     *
     * @return SqlSessionFactoryBean
     * @throws Exception
     */
    @Bean
    public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setTypeAliasesPackage("org.app.researchportal.core.domain");
        return sessionFactory;
    }

    /**
     * creates the AtomikosTransactionManager bean for JTA transactions
     *
     * @return UserTransactionManager
     */
    @Bean(name="AtomikosTransactionManager", initMethod = "init", destroyMethod = "close")
    public UserTransactionManager userTransactionManager() {
        UserTransactionManager userTransactionManager = new UserTransactionManager();
        userTransactionManager.setForceShutdown(false);
        return userTransactionManager;
    }

    /**
     * create the UserTransaction bean for Atomikos JTA implementation
     *
     * @return UserTransactionImp
     * @throws SystemException
     */
    @Bean(name = "AtomikosUserTransaction")
    public UserTransactionImp userTransactionImp() throws SystemException{
        UserTransactionImp userTransactionImp = new UserTransactionImp();
        userTransactionImp.setTransactionTimeout(300);
        return userTransactionImp;
    }

    /**
     * create the JtaTransactionManger bean to manage transactions
     *
     * @return JtaTransactionManager
     * @throws SystemException
     */
    @Bean(name = "JtaTransactionManager")
    public JtaTransactionManager jtaTransactionManager() throws SystemException {
        JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
        jtaTransactionManager.setTransactionManager(userTransactionManager());
        jtaTransactionManager.setUserTransaction(userTransactionImp());
        return jtaTransactionManager;
    }

    /**
     * creates Flyway bean to automatically handle database migrations
     *
     * @return Flyway
     */
    @Bean(name = "flyway", initMethod = "migrate")
    public Flyway flyway() {
        Flyway flyway = new Flyway();
        flyway.setDataSource(dataSource());
        flyway.setOutOfOrder(false);
        flyway.setBaselineOnMigrate(true);
        flyway.setLocations("classpath:migrations");
        return flyway;
    }
}

我认为您必须忘记配置数据源,如:

 <property name="driverClassName" value=
 <property name="url" value=

你在什么地方有循环依赖关系吗?看起来bean数据源想要注入sqlSessionFactory,它想要注入dataSource,它想要注入sqlSessionFactory,它想要。。。等等,我更新了问题。它在Tomcat中运行良好。无论出于何种原因,未加载属性文件似乎是根本原因正在加载的属性文件没有aysnc.executor.poolSize,这是导致其他文件的主要异常。因此,添加@propertySourcefilename以加载属性文件。