jmockit学习总结

mock类型和实例

从依赖的测试代码调用的方法和构造函数是mock(模拟)的目标。 Mocking提供了我们需要的机制,以便将被测试的代码与(一些)依赖关系隔离开来。我们通过声明适当的模拟字段和/或模拟参数来指定要为给定测试(或多个测试)模拟哪些特定依赖性; mock字段声明为测试类的注释实例字段,而mock参数声明为测试方法的注释参数。 要模拟的依赖关系的类型将是模拟字段或参数的类型。这种类型可以是任何类型的引用类型:接口,类(包括抽象和final类型),注释或枚举。

默认情况下,mock类型的所有非私有方法(包括静态,final或native的任何方法)将在测试期间被模拟。如果声明的mocked类型是一个类,那么所有的超类直到但不包括java.lang.Object也将被递归地mock。同时,继承的方法也会自动被mock。在一个类的情况下,它的所有非私有构造函数将被mock。

当一个方法或构造器被mock时,它的原始实现代码将不会被执行在测试期间发生的调用。相反,调用将被重定向到JMockit,所以它可以以显式或隐式指定测试方式处理。

以下示例测试框架用作对mock字段和mock参数的声明以及它们在测试代码中通常使用的方式的基本说明。在本教程中,我们使用了很多这样的代码片段,其中粗体字的部分是当前的重点解释。 

 1 //“Dependency”mock这个测试类中的所有测试。
 2 //“mockInstance”字段包含自动创建的用于每个测试的模拟实例。
 3 @Mocked Dependency mockInstance;
 4 @Test
 5 public void doBusinessOperationXyz(@Mocked final AnotherDependency anotherMock){
 6     ... ...
 7     new Expectations(){{//“expectation block”
 8     //记录一个期望值,返回一个给定的值:
 9     mockInstance.mockedMethod(...); result = 123;
10     ... ...
11     }};
12     ... ...
13     //调用测试下的代码。
14     new Verifications() {{ //“验证块”
15     //验证预期的调用:
16     anotherMock.save(any); times = 1;
17     }};
18     ... ...
19     }}
View Code

相关文章:

  • 2022-02-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
猜你喜欢
  • 2022-12-23
  • 2021-07-14
  • 2021-08-03
  • 2021-09-05
  • 2022-12-23
  • 2021-10-27
  • 2021-10-31
相关资源
相似解决方案