2016-11-13 24 views
1

我遇到以下问题。我的应用程序不会在启动时创建我的服务,当我尝试在使用@Autowired注入它们之后在我的Maven测试中使用它们时,最终得到了NullPointerExceptionSpring在启动时没有实例化bean

我不明白它来自哪里。我做了一些研究,但我仍然不明白为什么它不起作用。

这里是课堂,我的自动装配Autowired administrationActionService为空:

public class AdministrationActionTests extends EntityTests { 

    @Autowired 
    AdministrationActionService administrationActionService; 

    @Test 
    public void equalsTests() { 

     administrationActionService.getExample(); 

     [...] 

类:

package com.bloombooking.services; 
@org.springframework.stereotype.Service 
public class AdministrationActionService extends ServiceEntity{ 

    @Autowired private AdministrationActionDao administrationActionDao; 

    [...] 

而且我ApplicationContext.xml。我把它放在src/ApplicationContext.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-3.0.xsd"> 

    <context:component-scan base-package="com.bloombooking.services, com.bloombooking.dao"/> 

</beans> 

我真的不知道我可能做错了。有人能帮我吗?谢谢!

+1

如何'AdministrationActionTests'知道应用程序上下文文件是否存在? “EntityTests”的外观是什么? – Reimeus

+0

唔...你是什么意思?我需要在AdministrationActionTests中建立一个到applicationContext文件的链接? EntityTests是空的。 – Antoine

回答

2

为了使它工作,你必须做如下修改:

  1. 添加@RunWith(SpringJUnit4ClassRunner.class)到您的类。
  2. 添加@ContextConfiguration("path_to_you_spring_beans.xml")

,以便类变为:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("path_to_you_spring_beans.xml") 
AdministrationActionTests { 
} 
+0

它的工作!谢谢你,兄弟 !只是一个问题:我必须将@ContextConfiguration添加到我的所有文件中?还是仅用于Maven测试? – Antoine

+0

你需要在所有的测试类 – Jobin

+0

好的,谢谢你的建议:) – Antoine