单元测试共享库时隐藏依赖注入

时间:2017-10-28 08:24:18

标签: c++ unit-testing winapi dependency-injection information-hiding

在了解了在代码库中进行自动化测试的重要性之后,我正在尝试将单元测试添加到我自己相当大的C ++代码库中。

我正在处理的代码库是一个共享库。我想我理解如何处理我需要进行的大量系统调用;在接口后面隐藏很多它们并使用依赖注入。问题是,我不希望使用库的客户端代码看到依赖注入,因为这只是使库代码单元可测试的要求。

例如,请使用以下代码行:

TextBox* textBox = new TextBox();

TextBox类包含多次调用Win32 API函数的代码,例如剪贴板。如果我理解正确,我需要这样做才能对TextBox类进行适当的单元测试:

TextBox* textbox = new TextBox(IClipboardApi* clipboard);

问题是,如果有人使用这个库,我认为他们不应该提供真正的剪贴板实例。我可以利用默认值:

TextBox* textbox = new TextBox(IClipobardApi* clipboard = CreateClipboardInstance());

但我不知道这是不是正确的方法。

我对单元测试仍然很陌生,我的大部分库代码都是在我学习单元测试之前编写的。完全有可能这个课程写得不好。如果课程编写得很好,我怎么能从客户端隐藏这样的实现细节呢?如果课程写得不好,可能是更好的设计?

0 个答案:

没有答案