jmockit中文网备份 @Mocked入门

    1. 当@Mocked修饰一个类时

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 //@Mocked注解用途

public class MockedClassTest {

    // 加上了JMockit的API @Mocked, JMockit会帮我们实例化这个对象,不用担心它为null

    @Mocked

    Locale locale;

    // 当@Mocked作用于class

    @Test

    public void testMockedClass() {

        // 静态方法不起作用了,返回了null

        Assert.assertTrue(Locale.getDefault() == null);

        // 非静态方法(返回类型为String)也不起作用了,返回了null

        Assert.assertTrue(locale.getCountry() == null);

        // 自已new一个,也同样如此,方法都被mock了

        Locale chinaLocale = new Locale("zh""CN");

        Assert.assertTrue(chinaLocale.getCountry() == null);

    }

 

}

    1. 当@Mocked修饰一个接口/抽象类时

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//@Mocked注解用途

public class MockedInterfaceTest {

    // 加上了JMockit的API @Mocked, JMockit会帮我们实例化这个对象,尽管这个对象的类型是一个接口,不用担心它为null

    @Mocked

    HttpSession session;

    // 当@Mocked作用于interface

    @Test

    public void testMockedInterface() {

        // (返回类型为String)也不起作用了,返回了null

        Assert.assertTrue(session.getId() == null);

        // (返回类型为原始类型)也不起作用了,返回了0

        Assert.assertTrue(session.getCreationTime() == 0L);

        // (返回类型为原非始类型,非String,返回的对象不为空,这个对象也是JMockit帮你实例化的,同样这个实例化的对象也是一个Mocked对象)

        Assert.assertTrue(session.getServletContext() != null);

        // Mocked对象返回的Mocked对象,(返回类型为String)的方法也不起作用了,返回了null

        Assert.assertTrue(session.getServletContext().getContextPath() == null);

    }

}

  1. @Mocked功能总结

    通过上述例子,可以看出:@Mocked修饰的类/接口,是告诉JMockit,帮我生成一个Mocked对象,这个对象方法(包含静态方法)返回默认值。
    即如果返回类型为原始类型(short,int,float,double,long)就返回0,如果返回类型为String就返回null,如果返回类型是其它引用类型,则返回这个引用类型的Mocked对象(这一点,是个递归的定义,需要好好理解一下)。

  2. 什么测试场景,我们要使用@Mocked

当我们的测试程序依赖某个接口时,用@Mocked非常适合了。只需要@Mocked一个注解,JMockit就能帮我们生成这个接口的实例。 
        比如在分布式系统中,我们的测试程序依赖某个接口的实例是在远程服务器端时,我们在本地构建是非常困难的,此时就交给@Mocked,就太轻松啦!

原文地址:https://www.cnblogs.com/funkboy/p/12012501.html

时间: 2024-11-06 17:25:35

jmockit中文网备份 @Mocked入门的相关文章

jMockit中文网备份 @Test&@Injectable

@Injectable 与 @Mocked的不同 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 //@Mocked与@Injectable的不同 public class MockedAndInjectable {     @Test     public void testMocked(@Mocked Locale locale) {         // 静态方法不起作用了,返回了null         

jmockit中文网 dubbo bean

Dubbo是我们常用的RPC框架,在写单元测试需要调用Dubbo消费Bean时,如何模拟Dubbo消费Bean的行为呢? 就拿发邮件来说,通常,在代码中,我们是调用邮件的Dubbo服务来完成发送邮件的目的,于是我们会在Spring配置好的发邮件的Dubbo消费Bean,dubbo-consumer.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?xml version="1.0" encoding="utf-8"?>

jmockit中文网 expectations 入门

通过上面的例子,我们已经了解了Expectations的作用主要是用于录制.即录制类/对象的调用,返回值是什么. 录制脚本规范 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 new Expectations() {     // 这是一个Expectations匿名内部类     {           // 这是这个内部类的初始化代码块,我们在这里写录制脚本,脚本的格式要遵循下面的约定         //方法调用(可是类的静态方法调用,也可以

jmockit中文网 aop设置

在学习MockUp(API:MockUp)时, MockUp可以自定义方法体,覆盖类原有的方法. JMockit给我们提供了一个特别的方法,用于拦截所有方法,可以让我们在基于被Mock的方法做AOP. 比如我们想测试每个方法的时间性能. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 //通过在mock时做AOP测试方法的时间性能 public c

jmockit 中文网 springbean

如今,我们的很多应用程序是基于Spring的,通过Spring IOC容器来管理我们的Java对象.所以这里单独提出对Spring Bean如何Mock方法. 以上述提到如何Mock类中的提到的AnOrdinaryClass为例,先把这个类配置在Spring的配置文件中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0" encoding="utf-8"?> <!--su

jmockit 中文网 构造函数中文代码块

有时候,有些编写不良好的类的构造函数,初始代码块,静态代码块存在大量的初始化逻辑,初始化会报错. 比如,有些类初始化的时候就去连结DB,连不上就报错.这很影响我们的测试程序的运行. 此时,我们需要把这些初始化逻辑Mock掉.用我们的Mock逻辑替代.要Mock这些初始化代码,很简单.见如下的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 //一个包含初始代码块的普通类  publi

jmockit中文网 定制结果

在学习Expectations(API:Expectations)时   ,在new Expectations{{}}代码中,返回的结果都比较简单.就是一个单一的对象.可是有时,这个返回的结果,可能是需要经历一些业务逻辑计算后,才知道返回什么的,此时,我们就需要定制返回结果了. 还是上例子吧. 还是以上文打招呼的例子来说. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

jmockit 中文网 mq消息生产者

RocketMQ是我们常用的消息中间件,在运行单元测试时,我们可能不需要真正发送消息(除非是为了测试发送消息),也不想因为连结不上RocketMQ的Broker,NameServer而影响单元测试运行.   那我们该如何Mock RocketMQ消息生产者呢?  请看例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 //RocketMQ消息生产者 Mock  public class RocetMQProduce

常用书签

<!DOCTYPE NETSCAPE-Bookmark-file-1><!-- This is an automatically generated file. It will be read and overwritten. DO NOT EDIT! --><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"><TITLE>Bookmar