带有xml No Annotation的JUnit Spring无法加载bean

时间:2016-10-28 10:06:58

标签: java spring unit-testing junit

我总是在单元测试中获得空登录服务, 使用带有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;
    }
}

1 个答案:

答案 0 :(得分:1)

我相信你在课堂上缺少这个注释

@RunWith(SpringJUnit4ClassRunner.class)

你必须告诉junit它应该与Spring一起运行以使注射工作

您还应该使用@AutoWired来声明属性loginService,并将xml中的bean重命名为loginService。

你的atrributes和bean名称必须相同,以便Spring为你绑定它!