【Spring Boot 单元测试】2. 使用Mock单元测试Service

耗尽温柔 提交于 2020-01-07 00:23:45

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

现有如下简单Service:

@Service
public class UserServiceImpl implements UserService {


    @Override
    public Map<String, String> findByName(String name) {
        if (name.equals("admin")) {
            Map<String, String> m = new HashMap<>(2);
            m.put("id", "1");
            m.put("name", name);
            return m;
        } else {
            return null;
        }
    }
}

编写一个该Service的单元测试,测试findByName方法是否有效:

    @Autowired
    private UserService userService;

    @Test
    public void findByName() {
        Map<String,String> m = this.userService.findByName("admin");
        Assert.assertEquals("用户名为admin", "admin", m.get("name"));
    }

运行后,JUnit没有报错说明测试通过,即UserServicefindByName方法可行。

 

此外,和在Controller中引用Service相比,在测试单元中对Service测试完毕后,数据能自动回滚,只需要在测试方法上加上@Transactional注解

不建议使用,使用该注解会破坏测试真实性

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!