Bob*_*erg 5 c# unit-testing enterprise-library dependency-injection
也许我表现出我对依赖注入和测试缺乏了解,但我不明白如何使用依赖注入与不实现接口的类有助于我进行测试?
例如,在Enterprise Library 5.0文档中,它讨论了使用Unity容器创建实例.它说这有助于"可测试性:在使用依赖注入样式时,将类与依赖关系隔离起来是微不足道的." MSDN
如何在我的单元测试装置中使用它?他们的示例有一个构造函数,其参数为类而不是接口:
public class TaxCalculator
{
private ExceptionManager _exceptionManager;
private LogWriter _logWriter;
public TaxCalculator(ExceptionManager em, LogWriter lw)
{
this._exceptionManager = em;
this._logWriter = lw;
}
}
Run Code Online (Sandbox Code Playgroud)
要回答" 如何测试企业库代码 " 这一问题:您没有.测试其他人的东西是其他人的工作.Enterprise Library或任何其他第三方库中的任何接口或抽象都是出于自己的抽象目的而存在,而不是为了您的抽象目的.
您需要做的是定义自己的接口,描述应用程序的需求(日志记录,缓存,加密等),然后编写使用Enterprise Library(或其他第三方库)实现接口的适配器.这种做法被称为依赖性倒置原则.
要测试以这种方式设计的代码,对于单元/组件级别测试,您只需将Test Doubles用于您自己定义的接口(例如IMyOwnLogger).要测试您编写的适配器以适应第三方库,您可以编写集成测试.要测试它是否一起工作,您将编写通过UI或皮下驱动应用程序的验收测试.
有关此视图的更多信息,请查看我的文章:" TDD最佳实践:不要嘲笑其他人 ".
归档时间: |
|
查看次数: |
2000 次 |
最近记录: |