这里的情况实际上是由一个同事是挂了我的兴趣提出:可测性与过度设计?
public DoSomething()
{
//Do Stuff
var assembly = Assembly.LoadFrom("Path");
//Do More Stuff
}
因此,为了嘲笑这一点,你有两个选择
创建internal virtual
方法:
internal virtual IAssembly LoadAssembly(String path){...Load Here...}
或者,添加一个可以通过的新类
public class AssemblyLoader
{
public virtual IAssembly LoadAssembly(String path){...Load here...}
}
这两个选项似乎都是一个问题,因为第一个似乎应该是一个私有方法,第二个似乎是为一个简单的静态调用创建包装的过度设计?
所以,我想我会把它带到社区。我正在寻找最实用的方法,同时保留单元-可测试。
这与this SO question类似,但我想深入挖掘它。
难道你不能实现*依赖注入*?如果以这种方式构建它,它将保持可测试和可维护。虽然它会稍微难以阅读。 – Greg 2013-03-27 18:34:17
更好的问题是,你在构造函数中放置了多少逻辑?如果你需要单元测试你的构造函数,听起来更像是一种代码味道给我。 – 2013-03-27 18:36:49
为第二个选项投票。它确实造成了开销,但它并不是很大,而且它提供了一个“更大的目的”。它干净而且易于理解,并且使用自动注册的DI容器,在单元测试之外,您甚至不必关心它。 – TeaDrivenDev 2013-03-27 18:46:19