当前位置: 首页 > 面试题库 >

形成Mockito“语法”

柳坚白
2023-03-14
问题内容

Mockito似乎是一个非常漂亮的Java存根/模拟框架。唯一的问题是,我找不到有关使用其API的最佳方法的任何具体文档。测试中常用的方法包括:

doXXX(???) : Stubber
when(T) : OngoingStubbing
then(T) : OngoingStubbing
verify(???) : T
given(T) : BDDOngoingStubbing
willXXX(???) : BDDStubber

在实践中看到Mockito的示例时,您将看到类似以下的代码:

when(yourMethod()).thenReturn(5);

从我阅读的所有文档中,我已经确定了通过菊花链将这些方法调用链接在一起而获得的Mockito“语法”的几种“模式”,就像上面的示例一样。我发现的一些常见模式是:

什么时候/然后: when(yourMethod())。thenReturn(5);

给定/将: 给定(yourMethod())。willThrow(OutOfMemoryException.class);

做/何时: doReturn(7).when(yourMock.fizzBu​​zz());

Will / Given / Do: willReturn(any())。given(yourMethod())。doNothing();

验证/执行 verify(yourMethod())。doThrow(SomeException.class);

我最讨厌的是如何选择正确的模式/方法调用组合来对我的测试用例进行建模。似乎您可以将这些菊花链以似乎无穷无尽的组合方式菊链在一起,但我不确定哪种模式适合于哪个问题。

一些Mockito Guru能否帮助您了解哪种Mockito方法的模式/组合用于哪种类型的测试用例(以及为什么)?提前致谢!


问题答案:

Mockito通常有几种处理方法。

我发现自己主要使用:

// Setup expectations
when(object.method()).thenReturn(value);
when(object.method()).thenThrow(exception);
doThrow(exception).when(object.voidMethod());


// verify things
verify(object, times(2)).method();
verify(object, times(1)).voidMethod();

我发现通过这三种电话我可以完成95%的工作。

另外,您使用的是Mockito的哪个版本?最新版本(1.9.0+)中不存在“给定”和“将”构造

但是,在某些情况下,我希望返回值或异常能够响应输入。在这种情况下,可以使用Answer接口检查方法参数并返回适当的值。

public class ReturnFirstArg<T> implements Answer<T> {
    public T answer(InvocationOnMock invocation) {
        return invocation.getArguments()[0];
    }
}

when(object.method(7)).thenAnswer(new ReturnFirstArg<Integer>());


 类似资料:
  • Mockito似乎是一个非常好的Java存根/模拟框架。唯一的问题是我找不到任何关于使用API的最佳方法的具体文档。测试中使用的常用方法包括: 当您在实践中看到Mockito的示例时,您会看到如下代码: 从我读过的所有文档中,我已经识别了几个Mockito“语法”的“模式”,这些“语法”是通过将这些方法调用像上面的示例一样链接在一起而获得的。我发现的一些常见模式有: 当/然后:当(你的方法())。

  • 不确定语法是否要做这样的事情:我希望在运行时定义标记(将来使用文件中的数据)。所以我编写了一个简单的测试代码,正如预期的那样,它甚至不会编译。 在Perl 6中执行此类操作的最佳方法是什么?

  • 问题内容: 使用Mockito,我想在其参数列表中使用方法调用,但是我没有找到如何编写该方法的方法。 我只想要像Mockito那样的东西? 问题答案: 我会尝试

  • 在编写测试用例时,我使用Mockito模拟某个类。 有没有办法在返回值之前打印一些语句?例如: 上述声明有效,但我无法做到以下几点:

  • 主要内容:语法,示例,创建盒形图,盒形图与凹口盒形图是数据集中数据分布情况的衡量标准。它将数据集分为三个四分位数。盒形图表示数据集中的最小值,最大值,中值,第一四分位数和第四四分位数。 通过为每个数据集绘制箱形图,比较数据集中的数据分布也很有用。 R中的盒形图通过使用函数来创建。 语法 在R中创建盒形图的基本语法是 - 以下是使用的参数的描述 - x - 是向量或公式。 data - 是数据帧。 notch - 是一个逻辑值,设置为可以画出一

  • HQL 支持两种关联 join 的形式:implicit(隐式) 与 explicit(显式)。 上一节中给出的查询都是使用 explicit(显式)形式的,其中 form 子句中明确给出了 join 关键字。这是建议使用的方式。 implicit(隐式)形式不使用 join 关键字。关联使用"点号"来进行“引用”。implicit join 可以在任何 HQL 子句中出现。implicit jo