【发布时间】:2017-02-25 00:27:24
【问题描述】:
我的测试堆栈是:
- TestNG - 加粗是因为我看到 @runWith 被推荐为仅适用于 JUnit 的解决方案
- EasyMock
- PowerMock 的 MockStatic
我有一个用 @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 运行时。我相信我的类路径包含所有必要的 .jar 文件,因为 PowerMock.mockStatic() 被调用得很好,并且所有 jar 都被添加到同一个类路径中。
非常感谢任何帮助。
【问题讨论】:
-
请发布完整的、可运行的示例。
-
提示:欢迎提供一些反馈。现在我不知道你是否觉得我的回答不够,如果你正在寻找更多/其他信息......
-
您的回答确实不够充分,因为您所说的只是当我看到我面前的错误时,这应该是不可能的。我在企业应用程序上工作,因此无法提供代码。就问题而言,我已经能够将其追踪到一些不兼容的版本并且没有覆盖对象工厂。是的,虽然最好的解决方案是没有静态调用,但这并不总是可能的,我发现你的“学习如何创建可测试代码”的说法相当屈尊。我将使用有关不兼容版本的信息来回答问题。
标签: java ant testng powermock easymock