簡體   English   中英

PowerMock-無法將類org.powermock.api.mockito.internal.mockmaker.PowerMockMaker轉換為接口org.mockito.plugins.MockMaker

[英]PowerMock - Cannot cast class org.powermock.api.mockito.internal.mockmaker.PowerMockMaker to interface org.mockito.plugins.MockMaker

使用TestNg + PowerMock + Mockito時出現java.lang.ExceptionInInitializerError:

Caused by: java.lang.NullPointerException
at org.mockito.internal.configuration.plugins.Plugins.getStackTraceCleanerProvider(Plugins.java:17)

問題的根源是:

java.lang.ClassCastException: Cannot cast class org.powermock.api.mockito.internal.mockmaker.PowerMockMaker to interface org.mockito.plugins.MockMaker

我的依賴樹:

[INFO] +- org.powermock:powermock-api-mockito:jar:1.6.2:test
[INFO] |  +- org.mockito:mockito-all:jar:1.10.19:test
[INFO] |  \- org.powermock:powermock-api-support:jar:1.6.2:test
[INFO] |     \- org.powermock:powermock-reflect:jar:1.6.2:test
[INFO] |        \- org.objenesis:objenesis:jar:2.1:test
[INFO] +- org.powermock:powermock-module-testng:jar:1.6.2:test
[INFO] |  +- org.powermock:powermock-core:jar:1.6.2:test
[INFO] |  |  \- org.javassist:javassist:jar:3.19.0-GA:test
[INFO] |  \- org.powermock:powermock-module-testng-common:jar:1.6.2:test

測試類別:

@PrepareForTest({CrossSiteServletRequestFilter.class})
@PowerMockIgnore({"org.apache.log4j.*"})
@Test
public class CrossSiteServletRequestFilterTest extends PowerMockTestCase{
    @Mock
    private HttpServletRequest request;

    @BeforeSuite
    public void beforeSuite() {
        URL log4jCfg = CrossSiteServletRequestFilterTest.class.getClassLoader().getResource("log/log4j.xml");
        DOMConfigurator.configure(log4jCfg);
        MockitoAnnotations.initMocks(this); //<---It crashes here

我完全迷失了這個錯誤,感謝您的幫助。

您不應該將MockitoAnnotations.initMocks與TestNG一起使用。

Javadoc表示將其用於JUnit(我認為MockitoJUnitRunner / MockitoRule是更好的方法),但不適用於TestNG。

順便說一句,當您使用TestNG時, PowerMockTestCase等同於MockitoJUnitRunner 因此,只需刪除該行即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM