整理库API

时间:2009-04-11 05:06:03

标签: c# unit-testing mocking

我目前正在用C#编写一个包装器库,它包装了一个COM对象,它使用API​​非常小而且很麻烦,并且有一些杂乱的问题。

这是我使用TDD和嘲笑的第一个项目,很抱歉,如果这不是一个大问题。我把我的库的副本给了我的一个工作伙伴,他注意到的第一件事就是API中的大量接口。

我向他解释说,因为我进行单元测试和模拟,我需要接口来阻止测试接触COM对象,他有点理解,但它让我想到也许我的API有点混乱让人难以理解

我的问题是 - 如果我正在编写一个包装器库,其中每个对象都在某处触及COM API,那么整理我的API并仍然能够测试代码的最佳方法是什么。

对于大多数事情,我应该使用抽象类而不是接口吗?或者我应该隐藏仅在某个命名空间中出于模拟原因的接口?

2 个答案:

答案 0 :(得分:1)

除了对同事的评论之外,我还没有找到一个暴露的API。您的同事会欣赏您的应用程序在您前进的过程中所带来的灵活性,而不是“混乱的”API。

我不担心它,继续你的生活。

至于模拟,我绝对更喜欢接口而不是抽象类。您会发现,您将更多地编写撰写的应用程序而不是继承的应用程序。这是因为您希望保持对象较小且依赖性较少,因此测试不会变得很麻烦。

答案 1 :(得分:0)

如果界面仅用于模拟目的,我建议将其设置为内部。然后,您可以将InternalsVisibleToAttribute应用于包装器库,以向测试公开内部接口。