Mockito在Maven junit测试中的应用

这里略去maven工程的配置,以及junit在maven工程中的配置和使用;也不分析Mock的原理和Mockito与其他mock工具的异同。

重点讲解如何在maven junit中引入Mockito,以及使用mock完成单元测试。

1.添加Mockito依赖

在pom.xml中添加dependency:

    <dependency>
		<groupId>org.mockito</groupId>
		<artifactId>mockito-all</artifactId>
		<version>1.9.0</version>
		<scope>test</scope>
	</dependency>

版本可能需要注意下,这里Mockoito使用1.9,junit是4.7

保存后maven会自动从仓库中download:

17-12-21 下午02时52分06秒: Downloading http://repo1.maven.org/maven2/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.pom
17-12-21 下午02时52分06秒: Downloaded http://repo1.maven.org/maven2/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.pom
17-12-21 下午02时52分07秒: Downloading http://repo1.maven.org/maven2/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.jar
17-12-21 下午02时52分09秒: Downloaded http://repo1.maven.org/maven2/org/mockito/mockito-all/1.9.0/mockito-all-1.9.0.jar

后面在代码中引入Mockito即可。

2.单元测试中使用Mockito

假设有如下方法需要测试:
public int sumX(int a, int b){
        return 0;
    }
对应的测试代码大致如下:
private Calculator test;

@Before
public void setUp() throws Exception {
		test = new Calculator();
	}

@Test
public void testSumX() {
		assertEquals(2, test.sumX(1, 1));
	}

执行junit test,如无意外结果肯定是fail:


下面使用mock,使该单元测试通过:
首先引入Mockito
import org.mockito.Mockito;

使用Mockito
大致类似:
Type mock = Mockito.mock(Type.class);
然后设定返回值或者抛出异常:
when(mock.func(args).thenReturn(XXX);
when(mock.func(args).thenThrow(new RuntimeException()); 

上面案例中如下:
import org.mockito.Mockito;

@Test
public void testSumX() {
		Calculator mock = Mockito.mock(Calculator.class);
		Mockito.when(mock.sumX(1, 1)).thenReturn(2);
		assertEquals(2, mock.sumX(1, 1));
	}
mock sumX方法使其当输入为(1, 1)时返回2,然后再跟之前junit测试一样调用断言进行判断;重新执行junit test发现pass了

3.小结

当然实际测试中,mock不是这么用的,不是用来将错误的返回改成期望返回值,而是使用mock工具模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试目标与测试边界以外的对象隔离开。
本文旨在介绍如何在maven junit工程中引入和使用Mockito,所以仅以此为例。



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值