我正在对包含弹簧@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
。谁能在这里看到问题?
提前谢谢。
答案 0 :(得分:2)
嗯,我想我周一只是愚蠢,仍然从周末结束后恢复过来。
问题很简单明了。我正在创建一个不是由Spring管理的bean,因为我在测试calss中编写了UserService service = new UserService();
。为了通过弹簧注入豆子,春天必须意识到它并且具有相关的信息。在我的情况下,我有配置就绪(相关信息),但bean不是由Spring注入的(不是@Autowired
)。
总之,将UserService service = new UserService();
更改为
@Autowired UserService service;
解决了这个问题。