JUnit EasyMock PowerMockRunner静态/非静态方法

时间:2018-07-10 15:12:31

标签: java junit powermock easymock javassist

我最近在单元测试中遇到了设置问题。我使用JUnit进行了EasyMock测试,以实现开发人员除了使用静态方法模拟类外,还需要开发人员进行的所有奇妙模拟。输入PowerMockRunner。效果很好,但是我有一个实例,其中特定的类同时具有静态和非静态方法,我以相同的方式设置了此类:

@RunWith(PowerMockRunner.class)
@PrepareForTest({MyStaticClass.class})

...

mockStatic(MyStaticClass.class);
expect(MyStaticClass.getStuff()).andReturn(stuff).times(2);
replayAll();

我尝试进行构建(使用测试)并出现以下错误:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.455 sec <<< FAILURE! - in com.digital.controller.TestController
    initializationError(com.digital.controller.TestController)  Time elapsed: 0.007 sec  <<< ERROR!
    java.lang.IllegalStateException: Failed to transform class with name com.digital.web.processor.MyStaticClass. Reason: javassist.bytecode.InterfaceMethodrefInfo cannot be cast to javassist.bytecode.MethodrefInfo

我已经在Google上搜索并找到了解决方案,这是将javassist升级到PowerMock使用的相同版本(3.21.0-GA)。这可行,但是我正在探索可能不会升级javassist的选项。原因是此应用程序是使用3.17.1-GA的现有Web应用程序的扩展。如果没有,那么将扩展的Web应用程序从3.17.1-GA升级到3.21.0-GA有什么意义?

0 个答案:

没有答案