通过界面或注释类型使用Powermock注释

时间:2020-02-05 13:06:23

标签: powermock powermockrunner

我们正在尝试使用Powermock,对于初学者来说,我们认为它是用于静态方法测试的非常好的单元测试工具。

我们无法弄清楚如何在界面或注释类型中使用Powermock注释。

当我们在抽象类中使用它们并扩展我们的测试类时,它将起作用

@RunWith(PowerMockRunner.class)
@PrepareForTest({ Dummy.class })
@PowerMockIgnore({ "javax.management.*", "com.mycompany.excludepackage.*" })
public abstract class BaseTestClass {


}

但是在接口中按如下方式定义它们,并使测试类实现该接口不起作用:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ Dummy.class })
@PowerMockIgnore({ "javax.management.*", "com.mycompany.excludepackage.*" })
public interface ITestClass {


}

实施如下的自定义注释并使用该注释对测试类进行注释都无济于事:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Dummy.class })
@PowerMockIgnore({ "javax.management.*", "com.mycompany.excludepackage.*" })
public @interface TestClassAnnotation {

}

对于这两种情况,我们都有ClassNotPreparedException

[Ljava.lang.Object;@43bc63a3
The class xxx not prepared for test.

    at org.powermock.api.mockito.expectation.reporter.MockitoPowerMockReporter.classNotPrepared(MockitoPowerMockReporter.java:29)
    at org.powermock.api.mockito.internal.mockcreation.MockTypeValidatorFactory$DefaultMockTypeValidator.validate(MockTypeValidatorFactory.java:37)
    at org.powermock.api.mockito.internal.mockcreation.AbstractMockCreator.validateType(AbstractMockCreator.java:10)
    at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMock(DefaultMockCreator.java:49)
    at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.mock(DefaultMockCreator.java:40)
    at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:62)

那么除了扩展类之外,还有什么方法可以利用注释?扩展类对我们来说过于严格,因为我们将需要忽略同一测试类的不同软件包。

我们正在寻找一种通过合成而不是通过继承来实现这一目标的方法。

任何其他根据构图应用多个注释的建议也将有所帮助

预先感谢

0 个答案:

没有答案