簡體   English   中英

使用@ContextConfiguration運行Spring集成測試時,應用程序上下文為null

[英]Application context is coming as null while running spring integration test with @ContextConfiguration

我正在嘗試用spring編寫集成測試。 下面是測試課

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:**/context*.xml"})
public class MyFirstTestClass {

      @AutoWired
      private ApplicationContext applicationContext;

      @Test
      public void testApplicationContext {
        applicationContext.getName();
      }    
}

當我從Maven運行測試時,由於applicationContextnull所以我得到NullPointerException 我不明白原因。 另外在日志中我也沒有看到任何錯誤。 我嘗試將配置<context:annotation-config/>放在應用程序上下文文件之一中。 我仍然遇到同樣的錯誤。

當我使用classpath *:** / context * .xml手動創建上下文時,它可以工作。 但是我相信當我使用上下文配置時,它不會加載應用程序上下文文件。我也沒有收到任何錯誤。 請建議


好的,我設法加載了應用程序上下文。 但是現在IAM收到了NoSuchBeanDefinition異常。

豆文件

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

    <bean id="messageService"
          class="com.mycompany.app.MessageService">
    </bean>    
</beans>                 

測試班

package com.mycompany.app;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import junit.framework.TestSuite;
@ContextConfiguration(locations={"classpath*:*/AppTest.context.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class AppTest 
{
    @Autowired
    private ApplicationContext applicationContext;


    public AppTest(  )
    {

    }

    @Test
    public void testApp(){

        assertNotNull(applicationContext);
        for(String str : applicationContext.getBeanDefinitionNames()){
            System.out.println("Bean feifniaio count"+str); 
        }
        applicationContext.getBean("messageService");
    }
}

執行測試后記錄

INFO:刷新org.springframework.context.support.GenericApplicationContext@196751b:啟動日期[IST 2015年11月20日星期五00:00:11]; 上下文層次結構的根Bean feifniaio countorg.springframework.context.annotation.internalConfigurationAnnotationProcessor Bean feifniaio countorg.springframework.context.annotation.internalAutowiredAnnotationProcessor Bean feifniaio countorg.springframework.context.annotation.internalRequiredAnnotationProcessor Bean feifniaio。 countorg.springframework.context.event.internalEventListenerProcessor Bean feifniaio countorg.springframework.context.event.internalEventListenerFactory Bean feifniaio countorg.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor Bean feifniaio countorg.springframework.context.annotation.ConfigurationClassPostProcessor

我看不到消息服務bean。 可能是什么問題??

最后,我確定了問題。 我的上下文文件有問題。 我在test的資源文件夾中放置了一個空的上下文文件,該文件已被maven復制到目標文件夾中。 並且實際的上下文文件沒有被復制到target中。由於上下文文件為空,因此上下文已被初始化,但由於它沒有bean定義,因此拋出NoSuchBeanException。現在我要強調的是ContextConfiguration在沒有配置時不會拋出任何錯誤能夠找到location屬性中指定的上下文文件。 我認為這應該是理想的。我嘗試放置一些虛擬文件路徑,該路徑在location屬性中不存在,並且沒有引發錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM