Ich versuche eine letzte Klasse zu verspotten
PowerMockito.mockStatic(TestFinalClass.class);
Es funktioniert von meiner Eclipse aus, wenn ich ein einzelnes junit ausführen und javaagent meinen VM - Argumenten hinzufügen
-javaagent:{path}/powermock-module-javaagent-1.6.4.jar
Aber wenn ich versuche, alle Testfälle von der Kommandozeile aus mit dem Befehl maven build auszuführen, bekomme ich immer noch die Endklasse "Subclass kann nicht".
Unten ist mein Ausschnitt aus 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>
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);
}
}
Das funktioniert für mich. Wenn Sie die Anmerkungen "PowerMockRunner" und "PrepareForTest" hinzufügen, müssen Sie keine zusätzlichen VM-Argumente verwenden.
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);
}
}