使用泛型参数模拟静态方法



我有以下设置:

要测试的类:扩展BaseDisplayOptionSeriesOffset

测试等级: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")是作为mock创建的一部分被调用的,因为你至少指的是实际的类及其静态字段和static {}块是像往常一样加载的。

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

相关内容

  • 没有找到相关文章

最新更新