我总是在单元测试中获得空登录服务, 使用带有xml配置的spring并且没有自动装配。
除了junit测试之外,通过tomcat运行没有错误。
我得到了junit-4.12,hamcrest-library-1.3,hamcrest-core-1.3
继承我的样本beans.xml
<util:properties location="classpath:user-credentials.properties" id="userCredentials"` />
<bean id="loginServiceBean" class="com.company.service.LoginService">
<property name="userCredentials" ref="userCredentials" />
</bean>
在我的junit测试中
@ContextConfiguration("classpath:WEB-INF/beans.xml")
public class LoginServiceTest {
private LoginService loginService;
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void loginTest() {
User user = createUserModel();
try {
loginService.login(user);
} catch (LoginException e) {
fail(e.getMessage());
}
}
private User createUserModel() {
User user = new User();
user.setName("user");
user.setPassword("pass");
return user;
}
public LoginService getLoginService() {
return loginService;
}
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}
}
答案 0 :(得分:1)
我相信你在课堂上缺少这个注释
@RunWith(SpringJUnit4ClassRunner.class)
你必须告诉junit它应该与Spring一起运行以使注射工作
您还应该使用@AutoWired来声明属性loginService,并将xml中的bean重命名为loginService。
你的atrributes和bean名称必须相同,以便Spring为你绑定它!