我试图找到答案,但似乎没有直接讨论很多。我有我的应用程序的组成根,我创建一个DI容器并在那里注册所有内容,然后解析需要的所有依赖关系的顶级类。由于这一切都发生在内部 - 单元测试组合根很难。你可以做虚拟方法,受保护的领域等等,但我并不是很喜欢引入这样的东西来进行单元测试。其他类没有大问题,因为它们都使用构造函数注入。所以问题是 - 测试组合根目录是否合理?它确实有一些额外的逻辑,但并不多,在大多数情况下,在应用程序启动期间会出现任何故障。 一些代码,我有:组合根是否需要单元测试?
public void Initialize(/*Some configuration parameters here*/)
{
m_Container = new UnityContainer();
/*Regestering dependencies*/
m_Distributor = m_Container.Resolve<ISimpleFeedMessageDistributor>();
}
public void Start()
{
if (m_Distributor == null)
{
throw new ApplicationException("Initialize should be called before start");
}
m_Distributor.Start();
}
public void Close()
{
if (m_Distributor != null)
{
m_Distributor.Close();
}
}
你想在这里测试什么?组合根是应用程序平台的钩子。你不会找到一个简单的方法来模拟所有的基础架构代码。 –
那么,例如,想要测试进入的配置是否正确解析,开始调用m_Distributor.Start()等等。所以我不确定这是否需要太多... –
您是否使用XML文件进行配置?你能否将所有容器配置移动到安装程序(安装程序位于Castle Windsor,它们在Ninject中称为模块)类?我从来没有用过Unity。 –