3.5 Faking类初始化过程

如果某个类在需要在static块中完成一些初始化工作,而在测试时希望忽略掉这些初始化,就需要使用$clinit方法来fake类初始化过程。

public class Dependency {    

    //static赋值会被忽略
    public static String staticField = "staticField will not be initialized";
    
    //final可以赋值
    public static final String finalField = "finalField will be initialized";    
    
    //static语句块不会执行
    static {
        staticField = "staticField will not be initialized";    
    }
}
@Testpublic void TestMethod() {
    new MockUp<Dependency>() {
        @Mock
        void $clinit(){}
    };
    assertNull(new Dependency().staticField);
    assertNull(new Dependency().finalField);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容