[单元测试] 相关问题博客链接分享


前言

提示:本文的目的在于记录、分享作者在完成单元测试过程中遇到的问题和对应的优质博客链接。


提示:以下是本篇文章正文内容,下面案例可供参考

一、如何在单元测试中使用Mockito?

Android 单元测试 Mockito使用详解

二、‘Test Event were not received’的可能解决方案

【单元测试】test events were not received

三、Mockito中@InjectMocks 和 @Mock的区别

@InjectMocks: 实例化一个被注入对象A;
@Mock: 实例化一个待注入对象B。
两者的关系: A会调用B的相关接口,即在对A进行单元测试时,可以模拟B的接口返回结果(借此忽略对B中接口逻辑的测试,否则单元测试成了集成测试)。

示例代码如下:
1、单元测试 ExerciseTest.java

@InjectMocks
Exercise exercise = new Exercise();

@Mock
Run run;

@Mock
Walk walk;

@Test
public void checkCurrentSportName_inputWithRunOverAndWalkStart_returnWithCurrentSportWalk(){
	when(run.isTimeOver()).thenReturn(true);
	when(walk.isTimeOver()).thenReturn(false);
	assertThat(exercise.getCurrSportType()).isEqualTo("Walk");
}

2、Exercise.java

public class Exercise {
	private Run run;
	private Walk walk;
	
	public Exercise(){}
	
	public String getCurrSportType(){
		if(run.isTimeOver()){
			return walk.isTimeOver() ? "Walk" : "Run";
		} 
		return "Run";
	}
}

解释: @Mock实例化的mock对象B会被注入到@InjectMocks实例的mock对象A(前提是A要使用B中的接口返回结果)。在注入后,根据"when…thenReturn…"规则,当调用run.isTimeOver时,直接返回true;同理,walk.isTimeOver返回false。

等待更新...


转载请注明出处

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值