【问题标题】:no last call on a mock available happening only when calling testng via ant只有在通过 ant 调用 testng 时才会发生对模拟的最后一次调用
【发布时间】: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


【解决方案1】:

错误最终出现在一些不兼容的 powermock 和 testng 版本以及没有覆盖 here 中提到的对象工厂

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多