当前位置: 首页 > 知识库问答 >
问题:

spring测试类中的NullPointerException

凌啸
2023-03-14

我在测试spring Junit测试配置时得到一个NullPointerException。问题在于使用@ContextConfiguration和@AutoWired注释。

当我实例化上下文并直接获得对bean的引用(如测试方法中注释掉的代码所示)时,测试正确运行并成功。但是当我尝试使用@ContextConfiguration和@AutoWired注释时,使用相同的XML文件属性,我在assertEquals语句中得到一个NullPointerException。你知道我做错了什么吗?

package com.greathouse.helloworld.HelloWorldTest;

import javax.inject.Inject;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
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.TestCase;

@ContextConfiguration(locations = {"classpath:/resources/application-config.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class AppTest extends TestCase
{
    @Autowired
    MessageService messageService;

    @Test
    public void testApp()
    {
        //ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/resources/application-config.xml");
        //messageService = context.getBean("printMessage", MessageService.class);
        assertEquals( messageService.getMessage(), "Hello World" );
    }
}

共有2个答案

麹浩瀚
2023-03-14

您的字段messageService没有初始化-您应该再次取消对context.getBean-line的注释。

花永昌
2023-03-14

看起来messageService没有自动连接。如果您按要求放置messageService将会有所帮助。

@Autowired( required = true )

这样,当spring上下文启动时,spring会告诉你为什么它没有自动生成你的组件。另外,由于您使用的是JUnit4,您的测试不需要从TestCase扩展。

 类似资料:
  • org.springframework.beans.factory.unsatisfiedDependencyException:创建名为“MyPackage.MongoServiceTest”的bean时出错:通过字段“Mongo Service”表示的不满足的依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionExcep

  • 我想问一下你的知识。一个Spring启动应用程序包含各种映射器。这些应该进行测试。要测试映射器,应该读取一个JSON文件。这个JSON文件加载在每个测试文件中。到目前为止,该功能已在每个测试类中实现,我想将功能外包给一个助手类。我尝试如下: 在测试类中,我调用助手如下: 很遗憾,我收到以下错误消息: 组织。springframework。豆。工厂UnsatifiedDependencyExcept

  • 所以我是新来的salesforce,我完成了我的培训,现在我正在做一个项目。但是在我的项目中,我偶然发现了一个测试类,我没有找到编写它的方法,所以如果有人能帮我找到一种方法,我将不胜感激。这是代码: 此代码是一个触发器,当opportunity stage更改为“CloturéGagné”时,它会创建一个新的服务合同记录,其中包含从opportunity line items复制的合同行项目,在法

  • 我们正在慢慢地将一些项目从使用遗留的RestTemplate类迁移到新的Spring 5 WebClient。作为其中的一部分,我们有一些现有的测试类,这些测试类使用Mockito来验证给定的方法是否会使用模板对endpointX进行GET/POST/whatever。 考虑到WebClient的流畅界面,同样的模拟方法实际上并不实用。我花了一些时间使用WireMock,这很好,但不幸的是,似乎有

  • spring bean xml 有几个使用真实对象预先编写的测试用例。有没有办法我可以模拟这个类B,得到注入类A和模拟几个方法?我只想在我的测试用例中这样做,以便预先编写的测试用例不受影响?

  • 我要测试的用例是身份验证: 我有一个加载spring上下文通用Fixture: applicationContext-fitnesse-common.xml文件正在加载我的平台表单的所有依赖项,其中包括我的servlet(Spring Mvc文件)配置。 org.springframework.beans.factory.BeanCreationException:创建名为“ma.awb.ebk.