使用Junit和Mockito对SpringBoot框架项目进行单元测试(一)

使用Junit和Mockito对SpringBoot框架项目进行单元测试


看完这篇文章你就可以轻松的完成基本的单元测试,使得覆盖率达到90%以上Mockito 是流行的 Java 单元测试 Mock 框架,免费开源。
Mockito 拥有的非常少的 API,所以开始使用 Mockito,几乎没有时间成本。因为只有一种创造 mock 的方式。只要记住,在执行前 stub,而后在交互中验证。你很快就会发现这样 TDD java 代码是多么自然。
本文会对单元测试中最常见的问题包括:SpringBoot架构下单元测试的基本思路和方法,私有方法的测试、异常测试、测试驱动开发等方面进行阐述

一、mockito单元测试的一般思路



对被测试类的单个方法进行测试,当遇到依赖的外部资源时,对外部资源进行打桩、模拟。从而达到对该方法的逻辑正确性进行测试的目的。例如我们需要测试一个Spring @service A,他可能使用Autowired注解注入了外部的服务B,那么我可以使用Mockito的@Mock注解来对B进行Mock,使用Mockito.when(B.method())方法进行打桩,当测试程序执行到B.method()时就不再进入B中而是返回一个我们预先设定好的值或者行为。

例如:

1、测试类源码如下:

@RunWith(MockitoJUnitRunner.class)
public class TestUserServiceImpl {


	@InjectMocks
	UserServiceImp userServiceImp;
	
	@Mock
	UserMapper mapper;
	
	
	@Test
	public void	testGet(){			
		User user = new User();
		user.setName("huaAn");
		user.setId(0);
		user.setAccount("9527");
		Mockito.when(mapper.get(0)).thenReturn(user);
		org.junit.Assert.assertTrue(userServiceImp.getUser(0).equals(user));


		
	}
}

2、被测试类

package com.example.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.domain.User;
import com.example.mapper.UserMapper;


@Service
public class UserServiceImp implements UserService {

	@Autowired
	private UserMapper mapper;
	
	@Override
	public List<User> getAll() {
		return mapper.list();
	}

	@Override
	public User getUser(Integer id) {
		return mapper.get(id);
	}

	@Override
	public void insert(User user) {
		mapper.add(user);
	}

	@Override
	public void update(User user) {
		mapper.update(user);
	}

	@Override
	public void delete(Integer id) {
		mapper.delete(id);
	}

	
}
public interface UserMapper {
	
	public List<User> list();

	public User get(Integer id);

	public void add(User user);

	public void update(User user);

	public void delete(Integer id);
}
这就是SpringBoot项目单元测试的一般思路,测试中其他典型的测试方法和场景会在后面不断更新。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值