【发布时间】:2017-03-29 12:53:29
【问题描述】:
我编写的代码只是使用 powermock 模拟了一个静态方法。
在运行测试用例时,没有最后一次调用可用的模拟。
调试时发现在expect语句中抛出。
异常 throwm 的堆栈跟踪:
java.lang.IllegalStateException: no last call on a mock available
at org.easymock.EasyMock.getControlForLastCall(EasyMock.java:466)
at org.easymock.EasyMock.expect(EasyMock.java:444)
at junit.util.mock.Test.test1(Test.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
....
....
编写的测试类:
import static org.junit.Assert.assertEquals;
import static org.powermock.api.easymock.PowerMock.mockStatic;
import static org.powermock.api.support.membermodification.MemberMatcher.constructor;
import org.easymock.EasyMock;
import static org.powermock.api.support.membermodification.MemberModifier.suppress;
import static org.easymock.EasyMock.expect;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.powermock.api.easymock.PowerMock.replayAll;
import Testing;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Testing.class})
public class Test {
@org.junit.Test
public void test1() {
mockStatic(Testing.class);
expect(Testing.getWord()).andReturn("my Cal").anyTimes();
PowerMock.replay(Testing.class);
PowerMock.verify(Testing.class);
assertEquals(Testing.getWord(),"my Cal");
}
}
待测类:
public class Testing {
public static String getWord() {
return "from test";
}
}
【问题讨论】:
标签: unit-testing mocking mockito powermock easymock