当我运行我的单元测试时,所有测试都通过,但不是“测试运行成功”或任何成功消息,我在小栏中得到“测试运行错误”,告诉我有多少测试通过,即使我的所有考试都通过了。
当我点击文字时,我被带到一个页面,告诉我发生了以下两件事:
警告:测试运行部署期间发生冲突:测试容器[...] \ Booking.Web.Tests.dll直接或间接引用的部署项'[...] \ Booking.Web.dll'无法部署到'Booking.Web.dll',因为否则文件'[...] \ Booking.Web.dll'会直接或间接引用'[。]引用部署项'[...] \ Booking.Web.dll'。 .. \ Booking.Web.Tests.dll'
错误:无法初始化ASP.NET项目'Booking.Web' 抛出异常:网站无法正确配置;获取ASP.NET进程信息失败。请求“http://localhost:54131/VSEnterpriseHelper.axd”返回错误:远程服务器返回错误:(500)内部服务器错误。
我不明白它抱怨的一半。我如何摆脱这些错误?
(以供参考:Booking.Web是一个ASP.NET MVC 2项目,Booking.Web.Tests是一个测试项目,[...]是我环境中项目的完整本地路径,在大多数情况下以上案例到Booking.Web项目内的/ bin / debug /文件夹中)
更新按照说明,我在事件查看器中查找了更多信息。这是我发现的:
3008 发生了配置错误 5/8/2010 2:26:15上午 5/8/2010 12:26:15上午 4ffbe9180c3d4c02adb9ac4d61dd0928
1
1
0
4484bbf4-1-129177519750954331
全
/
d:\ ... \ Booking.Web \
AASLOEG1876
WebDev.WebServer40.EXE
Aasloeg \托马斯
ConfigurationErrorsException
无法加载文件或程序集'Ninject.Web.Mvc,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 79764a4ef1548af1'或其依赖项之一。强名称签名无法验证。程序集可能已被篡改,或者是延迟签名但未使用正确的私钥完全签名。 (来自HRESULT的异常:0x80131045)在 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName,Boolean starDirective)在
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()在
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)在 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)在
......荒谬的堆栈痕迹。
答案 0 :(得分:9)
首先 - 您启用了代码覆盖率。您可以阅读here。所以单元测试没有问题。这是代码覆盖问题。
第二件事 - 这个警告没问题 - 没关系。
第三件事 - 这个错误 - 这是关键问题。
可能存在不同的问题 - 最常见的是你应该引用更多的程序集。要找出究竟应该加载的内容,您必须转到Event Viewer并查看Windows日志 - >应用程序
答案 1 :(得分:6)
我遇到了与MS-Test相关的错误,抱怨DLL可以“覆盖部署项目blah.dll”。
这种情况正在发生,因为我正在为多个DLL一次运行MS-Test,如下所示:
mstest.exe /testcontainer:Tests.web.dll /testcontainer:Tests.svcs.dll /testcontainer:Tests.core.dll
当MS-Test运行时,它尝试从测试中获取所有输出DLL,并将它们放在测试运行的 / Out 目录中。就我而言, Tests.svcs.dll 和 Tests.core.dll 都引用了相同的程序集( Core.dll ),因此尝试过将该DLL复制到同一地点两次(从而导致警告)。
为了解决这个问题,我将每个程序集的测试运行分开,这给每个测试运行它自己的输出DLL的 / Out 文件夹
mstest.exe /testcontainer:Tests.web.dll
mstest.exe /testcontainer:Tests.svcs.dll
mstest.exe /testcontainer:Tests.core.dll