java junit测试,注解引入service报错解决办法

作为程序员,搞后端开发,当然离不开单元测试了。举个例子,测试下mapper接口,service接口等等。

当用到spring容器的时候,在测试类直接写 如下代码:

 @Autowired
    private AccountService accountServiceImpl;

当运行测试代码的时候,控制台会报错,提示:accountServiceImpl注入为空,到这里,很多人都会感到不可思议,明明自己代

码没写错,又跑回去检查配置文件,也是没问题,然后就束手无策了。

其实,道理是这样的。因为我们的accountServiceImpl是被spring容器托管的,容器没有加载到测试类,怎么会识别测试接口呢。

只需要这样改一下就可以了:

首先引入jar包

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.14.RELEASE</version>
            <scope>test</scope>
        </dependency>

然后:在测试类里加上这样的注解:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/application-*.xml"})
public class accountServiceImplTest {
    @Autowired
    private AccountService accountServiceImpl;
}

但是:这样的话我们每个测试类都要重复写一遍,可以这样改一下,写一个基础的类,加上注解,然后我们其他的测试类直接偶从基础类继承就可以了。

package com.wct.shop.basic;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * @author :cijiancao
 * @version :1.0.0
 * @Date :2018/3/6 18:53
 * @Description :
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/application-*.xml"})
public class TestBasic {
}
好了,这样就可以开心的测试了,再也不会报没有注入的错误了。


猜你喜欢

转载自blog.csdn.net/cijiancao/article/details/79459829