繁体   English   中英

用通用参数模拟静态方法

[英]Mocking a static method with a generic parameter

我有以下设置:

要测试的类: SeriesOffset ,它扩展了BaseDisplayOption

测试类别: SeriesOffsetTest

当创建SeriesOffset类的对象进行测试时,该对象的构造函数将进行超级调用,然后再调用以下方法:

 logger = LoggingService.getLog(this.getClass());

其中LoggingService是抽象类,而getLog(Class<?> clazz)是带有通用类参数的静态方法。 这个方法调用需要被模拟。 我使用名为ILogImpl的类为相同的对象创建了一个模拟实现,这就是我尝试对其进行测试的方式:

    ILogImpl a = new ILogImpl();
    PowerMockito.mockStatic(LoggingService.class);
    PowerMockito.when(LoggingService.getLog( SeriesOffset.class)).thenReturn(a);

但是这种方法似乎不起作用,它调用了真正的实现,而不是我需要调用的模拟实现。 错误跟踪如下: 错误跟踪

按照错误跟踪,我没有看到你真正落实getLog被调用,但真正的类初始化(“clinit”) 称为模拟创造的一部分,因为你至少指的是实际该类及其静态字段和static {}块将照常加载。

查看LoggingService.java的第41行,如果那里的问题不明显,请编辑答案,以便我们查看并进一步诊断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM