【问题标题】:junit not work @autowiredjunit 不工作@autowired
【发布时间】:2014-01-10 21:44:19
【问题描述】:

我收到一个错误自动装配的 bean。在测试类之外它可以工作。做错了什么?如何提升应用程序上下文。甚至指定哪些部分?这是我的代码:

<properties>
      <java-version>1.6</java-version>
      <org.springframework-version>3.1.0.RELEASE</org.springframework-version>      
 </properties>

   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>


    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
  <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
        <scope>test</scope>
    </dependency>

  <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${org.springframework-version}</version>
        <scope>test</scope>
  </dependency>

根上下文.xml

<?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


<import resource="hibernate-config.xml"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    //
</bean>

  @RunWith(SpringJUnit4ClassRunner.class)
  @ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/root-  context.xml" })

 public class AdminManagerTest5 {

@Resource(name = "sessionFactory")
private SessionFactory sessionFactory;

@Test
public void t(){
    System.out.print(sessionFactory);

}

}

休眠配置

  bean id="sessionFactory"       class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>

    <property name="configLocation">
        <value>WEB-INF/spring/hibernate.cfg.xml</value>
    </property>

错误

Caused by: java.io.FileNotFoundException: class path resource [WEB-      INF/spring/hibernate.cfg.xml] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:179)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:642)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 41 more

P.S.对不起我的英语

【问题讨论】:

  • 其他 Spring 依赖项在哪里?显示 pom.xml 文件的其他依赖项。

标签: java spring junit


【解决方案1】:

您的sessionFactory 配置指向

<property name="configLocation">
    <value>WEB-INF/spring/hibernate.cfg.xml</value>
</property>

但是WEB-INF/spring 目录没有添加到类路径中,因此 Spring 找不到它。

您需要指定 file: 前缀路径(相对或绝对)或将文件放在类路径中的某个位置。

【讨论】:

    【解决方案2】:

    您正在将 spring-test 4.0 与版本 3.1.0.RELEASE 的其他 spring jar 一起使用。不要那样做。使用 spring-test 3.1.0,或者使用所有其他 spring jar 的 4.0 版本,但不要将不兼容的版本混合在一起。

    【讨论】:

    • 如果我使用 spring-test 3.1.0.RELEASE,有 java.lang.IllegalStateException: Failed to load ApplicationContext
    • 然后读取异常堆栈跟踪和消息,找到异常原因并修复。
    • 我不知道如何解决它。指定了 hibernate.cfg.xml 文件路径。
    • 我在上面发布的堆栈跟踪以及文件
    • 首先WEB- INF中有多余的空格。其次,WEB-INF/spring/hibernate.cfg.xml 不是类路径资源。它是一个 Web 应用程序资源。而且您的单元测试没有在 Web 应用程序中运行。使用适合单元测试的配置文件配置您的测试。不适用于 Web 应用程序的配置文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多