我在this回答中看到,对于Java,您可以在单元测试中将私有方法的可见性设置为“true”,以便测试该方法。 VBA有没有这样的东西,所以我可以使用RD-VBA对私有方法进行单元测试?
如果没有,我有一个类在三个私有方法中解决一些逻辑并将其返回给返回值,我注定只给出一个输入值并测试返回值,而不能测试三种私人方法在两者之间进行升降?
答案 0 :(得分:7)
您不应该需要为私有方法编写测试,无论语言如何。您测试公共API,私有的是不相关的实现细节。
如果 相关且重要且足以自行测试,则应将该私有方法提取到另一个类,并将其作为该类的公共成员公开。
例如,一旦我有一个表单,我想将文本框中的用户输入限制为数字字符,并且由于我在其他地方重用该逻辑,而不是将其视为表单的实现细节,我提取了一个{ {1}}类及其公共AsciiInputValidator
方法可以作为自己的SUT以各种可能的方式进行测试。
不要测试私有方法:公共方法无论如何都会调用它们。
不幸的是,Extract Class重构功能在撰写本文时尚未实现,所以现在Rubberduck不能自动为您执行此操作...但它绝对是范围内的,如果您正在阅读本文,那么为了进行一些C#元编程挑战,请继续,拉请求总是受欢迎的!
答案 1 :(得分:1)
可以添加像
这样的公共包装器吗?public sub testPrivateSub(param1,param2...)
PrivateSub(param1,param2....)
end sub
private sub PrivateSub(param1,param2....)
....
end sub