我有以下设置:
要测试的类: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);
但是这种方法似乎不起作用,它调用真正的实现而不是我需要它调用的模拟实现。 错误跟踪如下:error trace
答案 0 :(得分:0)
根据错误跟踪,我不知道你的getLog
的实际实现在哪里被调用 - 但是真正的类初始化器(&#34; clinit&#34;)是< / em>被称为模拟创建的一部分,因为您至少引用了实际的类,并且其静态字段和static {}
块正常加载。
查看LoggingService.java的第41行,如果问题不明显,请编辑您的答案,以便我们可以看到并进一步诊断。