1

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

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

例如:

    class StaticClass {

      static void method(String one) {
          method2()
      }

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

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

我也尝试过使用元类编程来模拟该方法,但如果我将方法设置为一个闭包,第一个方法会再次进入 MIA。不知道如何使用重载方法来做到这一点。有任何想法吗?

4

2 回答 2

0

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

于 2012-02-23T23:06:57.963 回答
0

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

Groovy 的 MOP 也是如此。

于 2012-02-24T00:32:15.313 回答