我有一个使用Microsoft Enterprise Library的项目,并使用配置为缓存管理器指定类型。
以这种方式加载缓存管理器取决于我的测试项目中包含 的库Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
作为参考,但库 未被使用直接通过代码(在编译时)。因此,编译的mytests.dll将不会引用该库(使用dotpeek进行验证)。
问题#1:为什么MSTest不将此类文件复制到临时文件夹进行测试? 问题2:是否有优雅的解决方法?
不优雅的解决方案#1 :对包含的库进行虚拟引用(如上所述in this thread);
或解决方案#2 :使用MSTest Deploy配置明确包含库。
解决方案#3 :
即使部署选项已关闭,在mstest中使用.testsettings文件也可以解决问题。即testsettings文件包含:
<Deployment enabled="false">
</Deployment>
似乎这样做导致mstest不在临时TestResults\user_HOST 2011-12-21 15_22_08\Out
目录中运行,而是在bin\Debug
(所讨论的库正确部署到其中)中运行。
这是mstest的预期行为吗?我的意思是,如果在.testsettings文件中禁用了部署,mstest不使用临时目录吗?