Java 8 带Java8的Powermockito
我正在使用powermockito模拟Java7中带有参数的静态方法。最近开始迁移到Java8。迁移后,powermockito停止模拟静态方法,并开始调用原始方法 Pom.xmlJava 8 带Java8的Powermockito,java-8,powermockito,Java 8,Powermockito,我正在使用powermockito模拟Java7中带有参数的静态方法。最近开始迁移到Java8。迁移后,powermockito停止模拟静态方法,并开始调用原始方法 Pom.xml 有人能帮我解决这个问题吗?下面的代码适合我。请尝试在新项目中使用以下依赖项和代码 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x
有人能帮我解决这个问题吗?下面的代码适合我。请尝试在新项目中使用以下依赖项和代码 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>PowerMockTest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-xstream</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
女学生:
public class UtilTest {
public static String getName() {
return "test";
}
}
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
public String getMyTest() {
return "main test";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>PowerMockTest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-xstream</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.when;
import org.junit.Rule;
import org.junit.Test;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
@PrepareForTest({UtilTest.class})
public class PowerMockRuleTest {
@Rule
public PowerMockRule powerMockRule = new PowerMockRule();
@Test
public void testStatic() throws Exception{
PowerMockito.mockStatic(UtilTest.class);
when(UtilTest.getName()).thenReturn("1234");
System.out.println(UtilTest.getName());
Main mainMock = mock(Main.class);
PowerMockito.whenNew(Main.class).withAnyArguments().thenReturn(mainMock);
when(mainMock.getMyTest()).thenReturn("12345");
System.out.println(mainMock.getMyTest());
}
}
public class UtilTest {
public static String getName() {
return "test";
}
}
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
public String getMyTest() {
return "main test";
}
}