我正在使用 GMock 为我们现有的 Java 项目添加一些单元测试。我们有多个需要测试的方法是静态方法的地方,它们在我们要测试的方法中使用了额外的静态方法。
我希望能够部分模拟该类,除了用于测试的初始入口点之外,该类几乎所有静态方法。
例如:
class StaticClass {
static void method(String one) {
method2()
}
static void method(String one, String two) {
...
}
}
我希望我可以模拟第二个静态方法,但是一旦我这样做,method(String) 就会进入 MIA 并且执行测试失败并出现预期异常。有没有办法可以部分模拟类,保持第一种方法的功能,但模拟第二种方法的静态访问?
我也尝试过使用元类编程来模拟该方法,但如果我将方法设置为一个闭包,第一个方法会再次进入 MIA。不知道如何使用重载方法来做到这一点。有任何想法吗?