【发布时间】:2025-12-06 17:40:01
【问题描述】:
我想测试一个调用另一个私有方法的公共方法,我使用下面的反射方式来获取私有方法并尝试模拟它的返回值,但它没有工作,因为测试停止在私人电话在哪里。有什么建议吗?
Method testMethod = handler.getClass().getDeclaredMethod("test", String.class)
testMethod.setAccessible(true)
testMethod.invoke(handler, "test string") >> true
testMethod 如下所示:
private boolean test(String str) {
return true;
}
【问题讨论】:
-
你使用的是哪个模拟框架?
-
您是否尝试过简单地通过
metaClass替换该方法。最好替换私有方法使用的依赖项,而不是尝试替换该方法。但如果类是 Groovy,您应该能够执行以下操作:instance.metaClass.test = { String s -> return true }以拦截该实例中的调用。 -
对不起,我好像错了。我以为我以前用这种方式在 Groovy 中拦截了私人电话。
标签: java unit-testing groovy spock