美文网首页
JMockit对super方法的mock实践

JMockit对super方法的mock实践

作者: 普通的程序员 | 来源:发表于2020-08-30 12:17 被阅读0次

这篇实践,是为了验证一个问题
1.mock能不能 不执行父类方法?
2.构造器经过mock后,父类构造器会不会执行?

BaseClass.class

public class BaseClass {
    public BaseClass(String s) {
        System.out.println("this base class call:" + s);
    }

    public void baseFunc() {
        System.out.println("this baseclass do baseFunc");
    }
}

ParentClass.class

public class ParentClass extends BaseClass{
    public ParentClass(String s) {
        super(s);
        System.out.println("this ParentClass class call:" + s);
    }

    @Override
    public void baseFunc() {
        super.baseFunc();
        System.out.println("this parentclass do call");
    }
}

ChildClass.class

public class ChildClass extends ParentClass {

    public ChildClass(String s) {
        super(s);
        System.out.println("this ChildClass class call:" + s);
    }

    @Override
    public void baseFunc() {
        super.baseFunc();
        System.out.println("this childclass do call");
    }
}

ChildClassJMockitTest.class

public class ChildClassJMockitTest {
    static final class ChildClassMockUp extends MockUp<ChildClass> {
        @Mock
        public void $init(String s) {

        }
        @Mock
        public void $clinit(){

        }
    }

private ChildClassMockUp childClassMockUp = new ChildClassMockUp();//这一行有妙用

    @Test
    public void testFunc() {
        ChildClass child = new ChildClass("lahm");
        child.baseFunc();
    }
}

运行结果
屏蔽标记行的运行结果是


image.png

不屏蔽标记行的运行结果


image.png

区别就是,当前类childClass的构造器方法不被执行了。
但是父类构造器,跟父类方法实现 依旧执行。

原理:super的字节码并未被改变

相关文章

  • JMockit对super方法的mock实践

    这篇实践,是为了验证一个问题1.mock能不能 不执行父类方法?2.构造器经过mock后,父类构造器会不会执行? ...

  • 2019-01-19

    JMockit同一个类中Mock方法和跨类mock方法 输出

  • java中的mock工具-jmockit

    jmockit 标签(空格分隔): test mock 之前试过powermock,虽然可以mock 静态方法,但...

  • 2.1 创建并使用mock对象

    JMockit可以mock任意class、interface。可以将mock对象声明为域或者方法的参数。默认情况下...

  • Jmockit(一): 入门

    1 pom配置 testng + jmockit,使用junit也可以 2 程序结构 三步走: 录制,mock方法...

  • JMockit学习

    2019年8月27日 随笔 JMockit学习 概述 JMockit是一款Java类/接口/对象的Mock工具,目...

  • 2.15 自动注入被测试类

    用@Tested标注被测试类,在运行测试方法时,如果该实例仍然为null,JMockit会自动组装相关mock对象...

  • JMockit Mock测试入门详解

    1. 概述: 小伙伴们,想必你看到此文,估计也是被公司强制要求的单元测试覆盖率苦恼了,我想说:“me,too”。 ...

  • Spock 配置

    技巧 Mock 静态方法 GroovyMock 也可以 mock 静态方法,但其只能 mock 由 Groovy ...

  • 3.1 mock方法和mock-up类

    mock-up类是继承mockit.MockUp的类,mock方法是@Mock的方法,T是被mock的类。例...

网友评论

      本文标题:JMockit对super方法的mock实践

      本文链接:https://www.haomeiwen.com/subject/tqtesktx.html