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

时间:2018-04-12 14:33:13

标签: vba unit-testing tdd rubberduck

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

如果没有,我有一个类在三个私有方法中解决一些逻辑并将其返回给返回值,我注定只给出一个输入值并测试返回值,而不能测试三种私人方法在两者之间进行升降?

2 个答案:

答案 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