web-dev-qa-db-ja.com

Powermock mockstatic finalクラスをサブクラス化できません

最終クラスをモックしようとしています

PowerMockito.mockStatic(TestFinalClass.class);

単一のjunitを実行してjavaagentをVM引数に追加すると、Eclipseから動作します

-javaagent:{path}/powermock-module-javaagent-1.6.4.jar

しかし、Mavenビルドコマンドを使用してコマンドラインからすべてのテストケースを実行しようとすると、「最終クラスをサブクラス化できません」というメッセージが表示されます。

以下はpom.xmlからの私のスニペットです

            <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <argLine>-javaagent:{path}/powermock-module-javaagent-1.6.4.jar</argLine>
            </configuration>
        </plugin>
14
user3755282
package test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(FinalClass.class)
public class Tests {
    @Test
    public void test() {
    PowerMockito.mockStatic(FinalClass.class);
    }
}

これは私のために動作します。 「PowerMockRunner」および「PrepareForTest」注釈を追加する場合、追加のvm引数を使用する必要はありません。

26
wprzechodzen
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(FinalClass.class)
public class TestFinalClass{

    @Test
    public void whenMockFinalClassMockWorks() {

        FinalClass finalklass = PowerMockito.mock(FinalClass.class);
    }
}
0
Halim