我在使用Visual Studio 2010的.NET 4.0上的C#项目中有一个测试套件,包括单元测试和集成测试。测试套件使用MSTest。当我在解决方案中运行所有测试时(通过点击测试工具栏中的按钮或使用Ctrl-R A快捷键),所有测试,集成和单元都成功通过。
当我尝试使用mstest
从命令行运行相同的测试时(显式地使用仅存在的.testsettings
文件)或尝试从测试列表编辑器运行它们或使用{{ 1}}文件集成测试失败。
集成测试测试UI,因此依赖于部署项等,而单元测试却没有。但是,我似乎无法确定这两种运行测试方法之间的实际差异。
当我从测试运行中检查相应的.vsmdi
目录时,并非所有文件都存在。
什么会导致某些情况下从Visual Studio正确部署的某些文件无法在另一种情况下正确部署?
答案 0 :(得分:2)
我写完上述评论后不久就开始复制静态内容。我遇到的另一个主要问题是集成测试项目引用了库,这些库是被测系统的依赖项(copy-local设置为true),以确保DLL在需要时存在。出于某种原因,当测试通过测试列表或mstest
时,这些顽固地拒绝复制。
我最终解决的问题是包含我需要的DLL的[DeploymentItem]
属性。无论测试如何运行,这都能解决问题。我仍然不清楚,可能已经回答了底层解决方案,或提供了更好的解决方案,是Test View / mstest与常规测试运行器的不同之处(假设正确的.settings
文件传递给{{1 }})。我将这些注释/解决方法放在一个答案中,但我会保留问题,以防任何人可以解决不同测试执行路径如何不同的根本原因。