只有在通过 ant 调用 testng 时才会发生对模拟的最后一次调用

no last call on a mock available happening only when calling testng via ant

我的测试堆栈是:

我有一个测试 class,我用 @PrepareForTest(StaticClass.class)

进行了注释

然后在我的测试中我做了一个非常简单的

PowerMock.mockStatic(StaticClass.class); StaticClass.method(parameter); expectLastCall().anyTimes();

我遇到了标准 "java.lang.IllegalStateException: no last call on a mock available" 问题,但仅当 运行 来自 ant 的 TestNG 时,而不是来自 Eclipse 的 运行 时。我相信我的 classpath 包括所有必要的 .jar 文件,因为 PowerMock.mockStatic() 被调用得很好并且所有 jar 都被添加到相同的 classpath。

非常感谢任何帮助。

错误最终是由一些不兼容的 powermock 和 testng 版本造成的,并且没有像提到的那样覆盖对象工厂 here