@Autowired无法在测试中的类中注入bean

时间:2014-04-07 19:15:12

标签: java spring junit4

我正在对包含弹簧@Autowired变量的类进行单元测试。 但是,当我运行测试时,我得到NullPointerException指示对象userDetailsLoader为空。

以下是我所拥有的:

public class UserService {
    @Autowired
    UserDetailsLoader userDetailsLoader;

    public void doSomething (){...}

}

JUnit测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class UserServiceTest {

    UserService service = new UserService();

    @Test
    public void testDoSomething() {...}
}

UserServiceTest-context.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="userDetailsLoader" class="my.package.UserDetailsLoader" />

</beans>

配置文件已正确命名,没有FileNotFoundException。谁能在这里看到问题?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

嗯,我想我周一只是愚蠢,仍然从周末结束后恢复过来。

问题很简单明了。我正在创建一个不是由Spring管理的bean,因为我在测试calss中编写了UserService service = new UserService();。为了通过弹簧注入豆子,春天必须意识到它并且具有相关的信息。在我的情况下,我有配置就绪(相关信息),但bean不是由Spring注入的(不是@Autowired)。

总之,将UserService service = new UserService();更改为

@Autowired UserService service;解决了这个问题。