JMockit官方教程:被测试类的初始化和注入,20190401

5 篇文章 0 订阅
4 篇文章 0 订阅

http://hackday.cn/?p=1044

原文:http://jmockit.github.io/tutorial/Mocking.html#tested

 

测试类中,一个非final的实例字段被注解为@Tested,那么会在每个测试方法执行前,被自动实例化并注入。如果此时,这个字段是null,那么会使用一个合适的构造函数来实例化,并确保内部关联对象被正确注入。

为了向被测试对象里面注入mock过的实例,测试类需要包含一个或多个被注解为@Injectablel的mock字段或参数。为注解为@Mocked和@Capuring的mock字段或参数不会用来做注入之用。另外一方面,不是所有可注入的字段或参数需要有对应的可mock的类型。还可以有原生类型或数组。

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

public class SomeTest

{

   @Tested CodeUnderTest tested;

   @Injectable Dependency dep1;

   @Injectable AnotherDependency dep2;

   @Injectable int someIntegralProperty = 123;

 

   @Test

   public void someTestMethod(@Injectable("true") boolean flag, @Injectable("Mary") String name) {

      // Record expectations on mocked types, if needed.

 

      tested.exerciseCodeUnderTest();

 

      // Verify expectations on mocked types, if required.

   }

}

注意:一个不可mock的被@Injectable注解的字段或参数必须显示赋值,(原生类型?比如上面的 @Injectable int someIntegralProperty = 123;)否则会使用默认值。一个可注入的字段,其值可以直接赋予。(?)另外的做法,可以在@Injectable注解的value属性中赋值。这是为@Injectable参数赋值唯一的方式。

支持两种赋值方式:构造函数注入、值注入。

构造函数注入:被测试类必须有一个构造函数,满足测试类中定义了的可注入的值。注意:对一个给定的测试,可注入值由可注入字段集合,加上可注入的参数集合。因此,同一个测试类中的不同测试,可以提供不同的注入值给同一个被测试对象。

被测试类一旦选定构造函数,其中未被初始化的非final实例字段会被注入。注入的时候,会在测试类中按可被注入字段的类型,寻找同类行的字段。如果只找到一个,那就使用这个。如果有多个,则再使用字段名来做选择。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值