【发布时间】:2015-09-29 21:54:33
【问题描述】:
我有一个使用 PowerMock 来测试 Math 中的静态方法的测试用例,如
@RunWith(PowerMockRunner.class)
@PrepareForTest( { Math.class })
public class Test{
@Test
public void test2(){
PowerMockito.mockStatic(Math.class);
EasyMock.expect(Math.abs(-123)).andReturn(1);
EasyMock.replay(Math.class);
long returns = Math.abs(-123);
EasyMock.verify(Math.class);
org.junit.Assert.assertEquals(1,returns);
}
}
我的 pom.xml 看起来像
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.2</version>
<scope>test</scope>
</dependency>
我得到了错误
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.MocksControl.getControl(MocksControl.java:175)
at org.easymock.EasyMock.getControl(EasyMock.java:2130)
at org.easymock.EasyMock.replay(EasyMock.java:2032)
这是我第一次使用PowerMock,我只是想尝试测试静态方法,我选择Java Math类进行测试。我想我已经完成了来自https://code.google.com/p/powermock/wiki/MockStatic的说明中的所有部分
我的测试用例出了什么问题?
【问题讨论】:
-
可能是因为
EasyMock在代码中应该是PowerMockito?
标签: java junit mockito powermock easymock