无法在测试类中导入applicationContext

时间:2011-09-14 14:34:20

标签: spring spring-mvc junit

4 个答案:

答案 0 :(得分:7)

答案 1 :(得分:3)

好吧,最后我能够做到如下(基于 spring roo 生成的应用程序):

我将applicationContex.xml文件放在目录中:

src/main/resources/META-INF/spring

并在web.xml中:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

并在单元测试类中:

@ContextConfiguration(locations = { "classpath:/META-INF/spring/applicationContext.xml" })

答案 2 :(得分:1)

我将应用程序上下文文件保存在(src / main / resources)中并添加类路径后缀以从test或web.xml访问它们

要从(web.xml)访问位于src / main / resources中的上下文文件,请将此配置添加到web.xml

 <context-param>
  <description>
           Context parameters for Spring ContextLoaderListener     
      </description>
   <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:applicationContext.xml
    </param-value>
  </context-param>

  <listener>
     <listener-class>
           org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>

这是我的测试配置的样子

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@Transactional
public class MyTest 
{
}

答案 3 :(得分:1)

另一种解决方案是将applicationContext添加到main / src / resources。

还将(第二个)应用程序上下文(对于servlet)添加到META-INF,只有一行从类路径导入第一个上下文

  <import resource="classpath:/mypackage/my-servlet.xml"/>

然后您可以将第一个导入测试,并且没有重复的定义。