美文网首页
单测UnfinishedStubbingException

单测UnfinishedStubbingException

作者: 普通的程序员 | 来源:发表于2020-11-18 23:19 被阅读0次

用demo解释


interface Car{
  public String getCarName();//get车名
}

interface CarPrinter{
  public String print(Car car);//内部想打印车名,我只是没写
}

public class CarTest{
 @Mock
  Car car;
@Mock
CarPrinter carPrinter;

@Test
public void demo(){
Mockito.when(car.getCarName()).thenReturn("五菱宏光");
//注意,这里我也是mock了一个方法,使其返回五菱宏光

//works
String carname = car.getName();
Mockito.when(carPrinter.print(car)).thenReturn(carname);

//crash
//Mockito.when(carPrinter.print(car)).thenReturn(car.getCarName());
}

}

这个问题的意见

https://medium.com/@adamspeakman/mockito-unfinishedstubbingexception-in-tests-3d622532d491

"So why do we get an UnfinishedStubbingException? Because we’re accessing a mock before we finish the stubbing"

看完整个分析,我的理解是

mockito 还持有着一个 ongoingStubbing,简化来说就是

Mockito.when(carNamePrinter.printCarName(car)) 就是这个ongoingStubbing

这是mockito这个时候正在执行的mocProgress,

如果这个过程没有结束,我们就去进行另一个 car.getName()的mock操作,就会出现这个异常。

想解决这个异常,就要打断这个引用链。

相关文章

  • 单测UnfinishedStubbingException

    用demo解释 这个问题的意见 https://medium.com/@adamspeakman/mockito-...

  • {C#-05C} 单测.复合方法

    背景 合成多个子方法时传参多,责任不清时难单测 代码例 环境类 环境类单测 子函数 子函数单测 复合函数 复合函数单测

  • Android studio里单测覆盖率报告生成

    在Android studio里,单测分为本地单测和Android单测两种,区别在于是否需要使用dvm虚拟机,前者...

  • 徒手撸一个Mock框架(一)——如何创建一个mock对象

    自从老夫换了一个新厂之后,单测就写个不停,因为新厂对单测的要求还是比较高的。 在撸单测的过程中,用Mockito,...

  • iOS-单元测试

    单测在比较大的项目中会使用到,下面的几个东西是单测常用的工具,供大家参考。LCOV - 单测覆盖率报告生成工具;O...

  • 实验的变量与设计(四)

    (四)真实验设计 1单因素完全随机两等组设计 (1)单因素完全随机等组前测后测设计 统计方法1: 两组前测后测差值...

  • 最差的准实验设计是单组前测后测设计——课程笔记

    最差的准实验设计是单组前测后测设计。 因为单组前测后测设计中存在5种内部效度威胁:1趋中回归、2被试流失、3测验因...

  • 单测原则

    为何使用单元测试 它可以测试现有以及未来的功能模块,保证了代码质量。它强制你书写具有可测性,低耦合的代码。这比手工...

  • 谈谈单测

    个人认为, 一名菜鸟进阶到高级软件工程师需要的基本素质之一就是写单测! 作为一名菜鸟, 我刚开始也是排斥单测! 但...

  • Golang单测

    表格驱动测试: 写一个简单的测试用例 需要被测试得代码: 测试代码: 验证代码覆盖率 测算运行速度 如何通过命令进...

网友评论

      本文标题:单测UnfinishedStubbingException

      本文链接:https://www.haomeiwen.com/subject/taxqiktx.html