![]() |
1
8
|
![]() |
2
5
对我来说,根据依赖注入模式编写代码并使用IoC框架的主要原因是为了获得可测试的代码。但是,在测试代码中使用IoC容器将得到相反的结果。从你的问题中我可以看出你已经经历了这一点。 当使用服务定位器(SL)模式而不是依赖注入(DI)模式时,这尤其是一个问题。使用SL模式,类直接调用IoC容器(或此类容器的抽象),而不是向类提供所需的依赖项(使用构造函数注入)。因为类直接调用容器,所以您还需要在测试环境中配置该容器。这是痛苦的,因为测试配置或伪对象往往变得非常复杂,因为您经常希望在每个测试的基础上影响伪对象的行为,同时保持线程安全,因为测试框架可能并行运行您的测试(MSTest就是这样做的)。我知道我以前写过一些疯狂的线程安全测试代码,直到我发现我做的都是错的:-(。
因此,您应该在应用程序代码中使用DI模式,并在测试中手动连接这些依赖项。例如,当对一个
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 5 月前 |
![]() |
CactusCake · if语句中应有分号 6 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 6 月前 |