Java 8 带Java8的Powermockito

Java 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

我正在使用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"
         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";
  }
}