PowerMock mock static 方法遇到有关问题
PowerMock mock static 方法遇到问题
今天因为要模拟静态方法,所有找到powermock 遇到2个问题
1. 跑junit的时候,出现initialize error, stackoverflow 查到是 版本问题
4.11的 junit,居然 powermock认不得
http://stackoverflow.com/questions/26192929/unable-to-run-junit-test-with-powermockrunner
现在用的 版本是
<powermock.version>1.4.10</powermock.version>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
这样 junit可以跑了
2. 然后遇到 第二个 问题 The method when is ambiguous for the type
发现是 在 引入 static PowerMockito 对象时, 让when 方法 识别 不了用哪个方法了,所有 把 static import去掉了
直接用 PowerMockito.when(ABC.getvalue()).thenReturn("dfd");
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(ABC.class)
public class TestTableDdlSeq {
@Test
public void testHandlePriorityTables(){
PowerMockito.mockStatic(ABC.class);
PowerMockito.when(ABC.getvalue()).thenReturn("dfd");
System.out.println(ABC.getvalue());
}
}
class ABC{
static String getvalue(){
return "abc";
}
}
这样执行后 , 果然打印出 结果 dfd, 成功了 , 终于可以 mock static方法了!!
http://www.ibm.com/developerworks/cn/java/j-lo-powermock/
今天因为要模拟静态方法,所有找到powermock 遇到2个问题
1. 跑junit的时候,出现initialize error, stackoverflow 查到是 版本问题
4.11的 junit,居然 powermock认不得
http://stackoverflow.com/questions/26192929/unable-to-run-junit-test-with-powermockrunner
现在用的 版本是
<powermock.version>1.4.10</powermock.version>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
这样 junit可以跑了
2. 然后遇到 第二个 问题 The method when is ambiguous for the type
发现是 在 引入 static PowerMockito 对象时, 让when 方法 识别 不了用哪个方法了,所有 把 static import去掉了
直接用 PowerMockito.when(ABC.getvalue()).thenReturn("dfd");
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(ABC.class)
public class TestTableDdlSeq {
@Test
public void testHandlePriorityTables(){
PowerMockito.mockStatic(ABC.class);
PowerMockito.when(ABC.getvalue()).thenReturn("dfd");
System.out.println(ABC.getvalue());
}
}
class ABC{
static String getvalue(){
return "abc";
}
}
这样执行后 , 果然打印出 结果 dfd, 成功了 , 终于可以 mock static方法了!!
http://www.ibm.com/developerworks/cn/java/j-lo-powermock/