我已经设置了CI构建来构建我的解决方案并运行我的单元测试。解决方案是VS 2010.我的测试项目针对4.0框架。并且正确引用了10.0版本的单元测试框架。如果我在VS 2010中本地运行测试,我没有问题。但是,当我在TFS服务器(即TFS 2010)上运行我的CI构建时,出现错误说明:
找不到文件:C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ MSTest.exe
这是VS 2008的MSTest,它没有安装在我的TFS服务器上。我在我的TFS服务器上安装了VS 2010,包括测试工具,但是TFS没有找到它。
我的问题:为什么TFS会尝试使用此版本的MSTest来运行测试?我无法在服务器上的任何项目,解决方案或配置中找到指定的路径。
解决方案和相关项目始于VS 2008项目并迁移到VS 2010.这些文件被全新安装到TFS 2010和新的TFS项目中。它们未从2008 TFS服务器迁移。
谢谢!
答案 0 :(得分:2)
只是对此进行跟进,因为我最终发现了导致我的问题的原因,而不是上面给出的答案。我们在这个项目中引用了第三方断言实用程序类似“应该”称为“SoftwareApproach.TestingExtensions”。这个dll是一个较旧的,包含对MSTest 9的引用(来自VS 2008)。因为这个dll引用了MSTest 9,所以它在构建服务器上引起了这个错误,但是,测试会在本地运行。坦率地说,不知道为什么它没有在本地抱怨,因为没有绑定重定向并且没有安装VS 2008。
但是,更新到所提到的dll的构建,而是引用了MSTest 10,在构建服务器上解决了我们的问题。
答案 1 :(得分:1)
通过查看日志,问题是MSTest使用错误的版本在这里运行,因为您有一个旧的程序集引用。
确保您的单元测试项目和正在执行的任何其他项目都具有对新mstest程序集的正确程序集引用。我猜你要么错过了参考文献,要么添加到新参考文献中,忘记删除遗留参考文献。
“我无法在服务器上的任何项目,解决方案或配置中的任何位置找到此路径。”
是的,你不会在任何地方看到路径 - 它只会根据单元测试项目中引用的程序集执行。