我想问一下,为什么构建服务器上的测试失败了。故障的性质是什么?您确定构建服务器正在构建与本地完全相同的代码吗?例如,在干净的工作区中获取最新版本。您在构建服务器上运行的所有软件版本与本地运行的版本相同吗?如果您非常绝望,可以在本地计算机上设置构建控制器和代理,然后尝试将构建排队到该控制器。这将针对不同的环境测试相同的源代码和构建。 - John Saunders
@JohnSaunders 我希望通过调试来找出为什么单元测试失败。其中几个单元测试在构建服务器上给出超出范围的值,但在本地没有,而且一个单元测试以标准 WCF 通道故障的方式失败,因为我还没有实现正确的自定义故障。MS Build、MS test 等都是一样的。几周前服务器没有任何问题。 - Ian
1我很关心你的“单元测试”涉及WCF。这些通常被称为“集成测试”,因为它们涉及单元之间的集成。你所有没有依赖于网络、数据库或任何外部因素的测试都通过了吗? - John Saunders
@JohnSaunders 您说得非常正确 - 编写调用 WCF 方法的单元测试是集成测试,这是不好的做法。经过一番探索,我发现以下内容:默认的构建配置已更改为调用自定义模拟框架,其数据未被复制,并且其中一个单元测试现在调用了未部署到构建服务器上的服务。简而言之,您是正确的。现在,只是出于我的好奇心,您是否知道一种远程附加到 MSTest 的方法,以便调试由构建服务器调用的单元测试?谢谢。 - Ian
1不,我不知道怎么做。如果我必须这样做,我会在构建服务器上安装的Visual Studio中交互地运行单元测试,并查看是否可以重现问题。除此之外,我不知道了。您可能需要设置一个以交互模式运行的测试代理,或者一个整个构建控制器以您的身份登录,然后也许Debugger.Launch会起作用。 - John Saunders