我可以更改私有方法可见性以对其进行单元测试吗?



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

如果没有,并且我有一个类在三个私有方法中计算出一些逻辑并将其返回给返回值,我是否注定只能给出一个输入值并测试返回值,而无法测试三个私有方法在两者之间进行升沉提升?

无论使用哪种语言,您都不需要为私有方法编写测试。您测试您的公共 API,私有的是不相关的实现细节。

如果它足够相关且重要,可以单独进行测试,则应将该私有方法提取到另一个类,并将其公开为该类的公共成员。

例如,一旦我有一个表单,我想将文本框中的用户输入限制为数字字符,并且由于我在其他地方重用该逻辑,因此我提取了一个AsciiInputValidator类,并且其公共IsValidNumericValue方法可以作为其自己的 SUT 以各种可能的方式进行测试。

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

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

你能添加一个公共包装器吗

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

最新更新