Powermock(使用Easymock)没有模拟上的最后一个调用可用
2022-09-02 13:13:57
我试图只运行一个简单的测试用例。我有以下方法。
public static void run(String[] args) throws Throwable {
CommandLineArguments opts = CommandLineOptionProcessor.getOpts(args);
}
我将继续构建此方法/测试用例。但是,我只是想确保一个简单的测试用例首先起作用。所以我写了下面的测试。
@Test
public void testRun() {
String[] args = {"--arg1", "value", "--arg2", "value2"};
mockStatic(CommandLineOptionProcessor.class);
expect(CommandLineOptionProcessor.getOpts(args));
EasyMock.replay(CommandLineOptionProcessor.class);
}
之后,我收到以下错误:
java.lang.IllegalStateException: no last call on a mock available
我读了StackOverflow上的其他一些帖子,但他们的解决方案似乎是他们正在将PowerMock与Mockito一起使用。我正在使用Powermock和Easymock,所以这应该不是问题。
我听从了Rene的建议,将以下内容添加到我的班级顶部。
@PrepareForTest(CommandLineOptionProcessor.class)
@RunWith(PowerMockRunner.class)
public class DataAssemblerTest {
我修复了之前的错误。但现在我有这个错误。
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.ClassExtensionHelper.getControl(ClassExtensionHelper.java:61)
at org.easymock.EasyMock.getControl(EasyMock.java:2172)
at org.easymock.EasyMock.replay(EasyMock.java:2074)
.
.
.
任何关于可能导致这种情况的想法都会很棒。