Mstest单元测试从命令行失败

时间:2014-12-03 11:07:23

标签: c# unit-testing mstest

我编写了一个单元测试,它使用testsettings文件在OUT文件夹中部署一些引用的dll。我使用这个命令运行我的单元测试。

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" 
"/testcontainer:C:\Unittests\unit_test.dll" 
"/runconfig:C:\Unittests\unit_test_settings.testsettings" 
"/resultsfile:C:\Unittests\unit_test_results.trx"

我的单元测试中的某些测试运行正常,但有些测试失败并出现以下错误。

  

对象初始化失败(ISupportInitialize.EndInit)。名为“some_referenced_dll.resources.dll,PublicKeyToken =”的后备文化“en”的附属程序集无法找到或无法加载。这通常是一个设置问题。请考虑重新安装或修复该应用程序   System.Resources.MissingSatelliteAssemblyException:名为...

的附属程序集

为了解决此问题,我在testsettings文件中添加了some_referenced_dll.resouce.dll作为部署项,但这没有帮助。

我可以看到dll被复制到OUT文件夹中。

在我添加some_referenced_dll.dll作为对项目的引用之后,测试在VS 2012中正常运行。

更多信息:

有些测试直接使用其他dll作为参考(例如ref_dll_2.dll)并传递。这个ref_dll_2.dll也在OUT文件夹中。

我遇到的问题是dll(some_referenced_dll.resouce.dll)没有直接从我的测试中引用。我的单元测试调用了一些dev代码,它会尝试初始化一个失败的类。

强行加载dll会有意义吗?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

好的,所以我终于解决了这个问题。在此记录完整性。

问题是我的MSTEST单元测试找不到资源/附属程序集(some_referenced_dll.resources.dll),因此抛出异常。我使用deploymentItem属性来部署dll(some_referenced_dll.dll)但不是资源dll。解决方案是使用deploymentItem并部署资源dll(some_referenced_dll.resources.dll)。

Bill Wang在thread提供了一个很好的答案,帮助解决了这个问题。对于一个非常恼人的问题,这是一个简单的解决方案。