[英]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.