我正在使用GMock为我们现有的Java项目添加一些单元测试。我们有多个地方需要测试的方法是静态方法,它们在我们想要测试的方法中使用其他静态方法。
我希望能够部分地模拟类,除了初始的测试入口点之外,几乎所有类都是静态方法。
例如:
class StaticClass {
static void method(String one) {
method2()
}
static void method(String one, String two) {
...
}
}
我希望我可以模拟第二个静态方法,但是一旦我这样做,方法(String)就会进入MIA并且执行测试会因期望异常而失败。有没有办法可以部分模拟类,维护第一个方法的功能,但模拟第二个方法的静态访问?
我也尝试使用metaClass编程来模拟该方法,但如果我将方法设置为等于闭包,则第一种方法再次进入MIA。不知道如何使用重载方法执行此操作。有什么想法吗?
答案 0 :(得分:0)
虽然这不涉及GMock,但您可以在测试文件中扩展StaticClass并覆盖那里的方法
答案 1 :(得分:0)
在Gmock中,它会模拟静态方法并根据其名称匹配期望值。这意味着你不能模拟一个重载方法而不能模拟另一个方法。
与Groovy的MOP相同。