我有一个解决方案,根据DDD原则划分了几个项目。其中一个集成测试想要测试一种服务方法。该方法依赖于ICustomerRepository。 CustomerRepository在CustomerDomain.Infrastructure程序集中定义,具体的ICustomerRepository在CustomerDomain.Model程序集中定义。
依赖项由unity配置文件管理。映射是正确的,它指出了正确的程序集/命名空间和类。统一配置文件正确复制到testresult文件夹。但是,当测试运行时,它会失败并出现异常:“'UnityContainerManager'的类型初始化程序引发异常。”包含内部异常: “{”无法解析类型名称或别名CustomerRepository。请检查您的配置文件并验证此类型名称。“}”
经过一番调查后,我发现CustomerDomain.Model.dll永远不会复制到testResult dir,即使属性Copy Local设置为True也是如此。
如果我在TestInitialize方法中创建一个CustomerRepository实例,一切正常 - 复制程序集并通过测试。但这种解决方法对我来说似乎是对的 - 有没有更好的选择?
答案 0 :(得分:0)
Visual Studio仅复制那些至少使用了一种类型的引用程序集。
如果您不想创建真实的CustomerRepository
,请在引用的程序集中定义虚拟类型CopyEnforcer
,并在引用程序集中创建该实例。