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

@Autowired与JUnit测试

罗昕
2023-03-14

我使用JUnit,但有些测试有一些问题,这些测试在Spring bean中有@Autowired注释,当我引用它们时,@Autowired的bean总是为空。

     public class Test {

                 protected ApplicationContext ac;

                 @Before
                 public void setUp() {
                     ac = new FileSystemXmlApplicationContext("classpath:config/applicationContext.xml"
                     "classpath:config/test-datasources.xml");
                 }

                 @Test
                 public void testRun() throws Exception {
                        IManager manager =  (IManager)this.ac.getBean("manager");
                        manager.doSomething();
                 }
    }

    @Service
    public class Manager implements IManager {

            public boolean doSomething() throws Exception {
                 ParametersJCSCache parametersJCSCache = new ParametersJCSCache();
                 String paramValue = parametersJCSCache.getParameter("XPTO");
                 ...
            }
    }

    public class ParametersJCSCache extends SpringBeanAutowiringSupport {

          @Autowired
          private IParameterManager parameterManager;  //THIS IS NULL
    }

共有1个答案

柯昆
2023-03-14

尝试使用spring runner来运行单元测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:config/applicationContext.xml",
                 "classpath:config/test-datasources.xml"})
public class MyTest {

   @Autowired private IManager manager;

   @Test public void someTest() {
     assertNotNull(manager);
   }
}

它将只加载配置一次,并在需要时加载,它将自动激活junit类

 类似资料:
  • 问题内容: 我已经使用过JUnit,但是某些测试存在一些问题,这些测试在Spring bean内具有@Autowired批注,当我引用它们时,@ Autowired的bean始终为NULL。 这是示例代码: 当调用Manager对象时,Spring会生成代理,但是当访问@Autowired parameterManager时,该对象为null,并且由于这个问题,我无法测试此方法。 知道是什么原因造

  • 我正在使用autowiring(@Autowired)在JUnit测试类中注入依赖项,并面临NullPointerException。我想知道在JUnit测试类中是否可以进行自动布线。否则,应该如何在测试类中注入bean。我的代码如下- 主类/客户端-自动布线按预期工作。 服务接口和实现类接口IMessage 服务台:欢迎光临服务台 服务SayHelloService 主服务调用其他服务。自动装配

  • 我正在为我的RESTAPIendpoint编写JUnit,我已经为它创建了一个简单的hello world控制器类和JUnit,但是我在执行JUnit测试用例时遇到了以下异常。如果有人能帮我解决这个问题,那将非常有帮助。我在Spring4.3版本中使用JDK6 注意:我没有使用spring上下文XML—我使用的是Java注释 你好ontroller.java HelloControlllerTes

  • 我正在尝试使用Junit并行运行cucumber特性文件,如官方文档中所述[https://cucumber.io/docs/guides/parallel-execution/#junit],但在我的项目中,我使用Gradle而不是Maven,不知道如何实现这一部分:

  • 我有一个Spring组件我想测试,这个组件有一个autowired属性,为了单元测试的目的,我需要更改它。问题是,这个类在后构造方法中使用autowired组件,所以我不能在它实际使用之前替换它(即通过反射)。 我该怎么做? 在调用postconstruct方法之前,有什么方法可以用其他东西替换资源吗?喜欢告诉Spring JUnit runner autowire不同的实例吗?