0

我有以下设置:

要测试的类:SeriesOffset扩展BaseDisplayOption

测试类:SeriesOffsetTest

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

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

whereLoggingService是一个抽象类,getLog(Class<?> clazz)是一个带有泛型类参数的静态方法。这个方法调用需要被模拟。我用一个名为的类创建了一个模拟实现,ILogImpl这就是我试图测试它的方式:

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

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

4

1 回答 1

0

根据错误跟踪,我看不到您的真正实现在哪里getLog被调用 - 但真正的类初始化程序(“clinit”)称为模拟创建的一部分,因为您至少指的是实际的类并且它的静态字段和static {}块像往常一样被加载。

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

于 2015-03-30T15:54:13.847 回答