添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

整理Mockito结合ArgumentCaptor捕获多次调用的方法的参数

今天在对业务代码进行开发时,发现需要捕获多次调用的方法的参数,验证参数传递的正确性,这里对获取方法进行总结。

首先,模拟一个简单的测试场景,有一个对外提供服务的类:

@Component
public class CaptorLearning {
    private DalService dalService;
    @Autowired
    public CaptorLearning(DalService dalService) {
        this.dalService = dalService;
    public int getResult(int num1, int num2, int num3) {
        int result1 = dalService.doHandle(num1, num2);
        int result2 = dalService.doHandle(num1, num3);
        return result1 + result2;

有一个内部的业务处理类:

@Component
public class DalService {
    public int doHandle(int num1, int num2) {
        return num1 + num2;

这里要对CaptorLearning进行单元测试覆盖,因此需要判断dalService两次调用了doHandle方法,并获取相应的参数,判断是否参数调用正确。

首先是两次调用,可以利用Mockito提供的verify方法,来判断调用次数,代码如下:

	@Test
    public void testByVerify() {
        captorLearning.getResult(num1, num2, num3)
整理Mockito结合ArgumentCaptor捕获多次调用的方法的参数今天在对业务代码进行开发时,发现需要捕获多次调用的方法的参数,验证参数传递的正确性,这里对获取方法进行总结。首先,模拟一个简单的测试场景,有一个对外提供服务的类:@Componentpublic class CaptorLearning { private DalService dalService; @Autowired public CaptorLearning(DalService dal.
1 mock 静态方法mockito库并不能mock静态方法,需要依赖powermock第一步:给类添加注解// 静态类优先加载,所以需要提前告诉powermock哪些静态类需要mock @ContextConfiguration @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.cl...
有时,不仅要验证对象的方法是否被调用,还要检查传给方法参数是否正确。 今天,埃德蒙的工作是给类DownloadActive写ut。 DownloadActive的功能是下载软件,并将成功与否的结果通知Listener. doTask首先做下载的动作,然后发通知。 发通知,即调用listener的report方法。 为了方便说明,将doTask简化,只是通知侦听者们一个字符串“OK”。...
Mockito 是一个针对 Java 的单元测试模拟框架,可以简化单元测试过程中测试上下文对象。它可以做如下事情: 1)模拟方法的返回值、模拟抛出异常 2)验证方法调用次数、验证方法参数类型 3)捕获方法参数值 4)为真实对象创建一个监控(spy)对象 1)不能 Mock 静态方法 2)不能 Mock private 方法 3)不能 Mock final class
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @SuppressWa... 在其他语言中, 可以定义多个重名的方法, 只要保证方法签名的唯一即可. 方法签名包含 3 个部分: 方法名, 参数数量, 参数类型. Python 中, 方法参数没有类型 (调用时确定参数类型 ), 参数的也可以由可变参数控制. 因此, Python 中是没有方法的重载的. 定义一个方法即可有多种调用方式, 相当于实现了其他语言中的方法的重载. 如果我们在类通中定义了多个重名的方法, 只有最后一个方法有效. 建议: 不要使用重名方法 ! Python 中方法没有重载.
文章目录目前开发中,单元测试遇到的问题解决方案--MockJunit4 + Mockito:Mockito常用注解:Mockito常用方法:Tips:总结 目前开发中,单元测试遇到的问题 在业务代码开发完成以后,需要对新增代码进行单元测试,由于项目依赖的第三方组件以及外部系统接口较多,每次执行单元测试时都需要启动整个项目,加载各种依赖,而且由于网络限制有时还需要申请各种ACL,且项目启动耗时较长,有时仅仅为了跑一个仅有几行代码的单元测试,却要耗时几分钟等待项目的启动,严重违背单元测试的初衷。这种情况导致了大
Mockito框架官方地址mockito,文档地址,中文版文档。 Mockito库能够Mock对象、验证结果以及打桩(stubbing)。 1. Mock和Mockito的关系 在软件开发中提及mock,通常理解为模拟对象。 为什么需要模拟? 在我们一开始学编程时,我们所写的对象通常都是独立的,并不依赖其他的类,也不会操作别的类。但实际上,软件中是充满依赖关系的,比如我们会基于service类写操作类,而service类又是基于数据访问类(DAO)的,依次下去,形成复杂的依赖关系。 MyClass myClassMock = mock(MyClass.class); myClassMock.myMethod("expectedArg1", 123); verify(myClassMock).myMethod("expectedArg1", 123); 如果`myMethod`方法调用时传递的参数与期望的参数不匹配,那么`verify`方法会抛出异常。