基于GMock的多静态方法的部分模拟类

时间:2012-02-23 22:51:19

标签: groovy gmock expandometaclass

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

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

例如:

    class StaticClass {

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

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

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

我也尝试使用metaClass编程来模拟该方法,但如果我将方法设置为等于闭包,则第一种方法再次进入MIA。不知道如何使用重载方法执行此操作。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

与Groovy的MOP相同。