我们有一个 ASP.NET MVC 4.5 项目。几个月来,它一直在编译,所有单元测试都在我们的开发机器和 TeamCity 7.1.5 机器上本地通过。周一,我们更新了一些依赖项的较新版本(特别是为选择扩展获取 OData 5.0.0-rc1)。
该项目在我们的开发机器和构建机器上编译良好。它在我们的开发机器和它部署到的两个 QA 环境上运行良好。所有单元测试都在我们的开发机器上通过。但是,当使用 MSTest 构建运行器从 TeamCity 运行时,大约一半(~300)的单元测试现在失败,所有这些都出现相同的无用错误:
Unit Test Adapter threw exception:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
我已经尝试了所有可以想象的东西。起初我认为这是一个合理的问题。由于无法从 TeamCity 检索 LoaderExceptions 属性(为什么 MSTest 不显示更多信息!?!?),我登录到运行 TeamCity 的机器,打开控制台,更改为我们的工作目录build 正在运行,并手动运行测试,以便我可以检索该属性。所有的测试都通过了!有这个理论...
经过一整天的谷歌搜索和阅读 StackOverflow 上的其他答案后,我尝试了大约两打以下步骤的不同组合:
- 将构建从“重建”更改为“清理”,在没有测试的情况下运行它,以便它只是清理,将其更改回来,然后再次运行。
- 将构建从“调试”更改为“发布”,运行它,然后再次将其更改回来。
- 来自 TeamCity 管理页面的清洁剂来源。
- 手动从代理中删除整个工作目录,跳过回收站并直接进入下界。
- 从构建机器和代理中删除所有源代码控制 (TFS) 缓存。
- 告诉 TeamCity 在从源代码管理中获取最新信息之前清理工作目录。
我的故障排除能力已经到了尽头。测试将不再在构建机器上运行,显然完全没有理由。
我能做些什么?到底他妈发生了什么?