为什么PowerMock尝试加载一些类,这些类在非mock类方法中使用



我使用JUnit4和Mockito进行单元测试,现在我正试图将PowerMock添加到我的工具箱中。我马上就遇到了PowerMock的一个奇怪的类加载行为。因此,我使用如下代码:

@PrepareForTest(ClassToMock.class)
public class MyTest
{
    @Rule
    public PowerMockRule rule = new PowerMockRule();
    @Test
    public void myTest() throws Exception
    {
        // some test code using ClassToMock
        MyHelper.staticMethod(param);
        // some other test code
    }
}

MyHelper是来自另一个bundle的某个类,staticMethod()是某个方法,我不需要对其进行模拟。这个方法使用Google Gson和我的一些序列化器(比方说- MySerializer类)。PowerMock扔给我一个javassist。Google Gson和MySerializer的NotFoundException。例如:

Caused by: javassist.NotFoundException: com.google.gson.GsonBuilder
at javassist.ClassPool.get(ClassPool.java:450)
at org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:220)

我可以将这些类添加到类路径中(添加到已导入的包中),但我不想这样做。为什么PowerMock尝试加载类,这些类在一些方法中使用,这些方法应该只是一个"黑匣子",首先?

有谁能解释一下吗?

此外,我可以摆脱加载Gson使用@PowerMockIgnore("com.google.*")注释,但它不工作的MySerializer。而且这似乎也不是一个合适的解决方案。

谢谢!

您的类可能正在使用

静态块

需要使用powermock来抑制,这样它就不会去加载那些静态块

所需的所有类

参考此链接查看SuppressUnwantedBehavior

的用法

相关内容

  • 没有找到相关文章

最新更新