带有GMock的多个静态方法的部分模拟类



我正在使用GMock为我们现有的Java项目添加一些单元测试。我们有多个地方需要测试的方法是静态方法,它们在我们想要测试的方法中使用额外的静态方法。

我希望能够部分地模拟这个类,除了测试的初始入口点之外,类上几乎所有的静态方法。

例如:

    class StaticClass {
      static void method(String one) {
          method2()
      }
      static void method(String one, String two) {
          ...
      }
    }

我希望我可以模拟第二个静态方法,但只要我这样做,方法(String)就会变成MIA,执行测试失败,并出现预期异常。有没有一种方法可以部分模拟类,保持第一个方法的功能,但模拟第二个方法的静态访问?

我也尝试过使用metaClass编程来模拟该方法,但如果我将方法设置为闭包,则第一个方法将再次变为MIA。不知道如何使用重载方法来完成此操作。有什么想法吗?

在Gmock中,它模拟静态方法,并根据它们的名称匹配期望值。这意味着您不能模拟一个重载方法,而不能模拟另一个。

与Groovy的MOP相同。

虽然这并不特别涉及GMock,但您可以在测试文件中扩展StaticClass并覆盖那里的方法

最新更新