我可以更改私有方法的可见性以便对它们进行单元测试吗

Can I change a private methods visibility in order to unit test them

我在 this 的回答中看到,对于 Java,您可以在单元测试中将私有方法的可见性设置为 "true",以便测试该方法。 VBA 是否有类似的东西,以便我可以使用 RD-VBA 对私有方法进行单元测试?

如果没有,我有一个class在三个私有方法中计算出一些逻辑并返回给一个return值,我注定只能给出一个输入值并测试return 值,无法测试在两者之间进行提升的三个私有方法?

你能添加一个public包装器吗

public sub testPrivateSub(param1,param2...)
     PrivateSub(param1,param2....)
end sub

private sub PrivateSub(param1,param2....)
....
end sub

您不应该需要为私有方法编写测试,无论使用何种语言。您测试 public API,私有的是不相关的实现细节。

如果它 相关且重要到足以单独测试,那么您应该将该私有方法提取到另一个 class,并将其公开为 public class 的成员。

例如,一旦我有一个表单并且我想将用户在文本框中的输入限制为数字字符,并且由于我在其他地方重用该逻辑而不是将其视为我的表单的实现细节,我提取了AsciiInputValidator class 及其 public IsValidNumericValue 方法可以作为其自己的 SUT 以各种可能的方式进行测试。

不要测试私有方法:public 无论如何都会调用它们。

不幸的是,Extract Class 重构功能在撰写本文时尚未实现,因此目前 Rubberduck 无法自动为您执行此操作...但它绝对在范围内,如果您正在阅读本文如果您准备好迎接一些 C# 元编程挑战,那就去做吧,我们随时欢迎拉取请求!