我该如何调试推送到我的TFS构建服务器的代码?

5

我有一个项目,本地运行、构建和通过所有单元测试,但在构建服务器上单元测试失败。我使用的是.NET 4.5、TFS和VS 2012。理想情况下,我希望能够逐步执行在服务器上执行的代码,以便再次检查失败的单元测试。


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

6

以下是两种方式之一:

直接在构建服务器上进行调试

  1. 手动通过RDP连接到构建服务器
  2. 导航到构建下载源代码的位置
  3. 在Visual Studio中打开解决方案文件,并在测试资源管理器中,右键单击 > 调试选定的测试

如果设置VS远程调试的网络不是很麻烦,还有另一种方法:

在构建服务器上远程调试测试

  1. 手动通过RDP连接到构建服务器
  2. 启动Visual Studio远程调试监视器(需要下载/安装)
  3. 在自己的机器上,打开解决方案并设置测试项目以使用远程机器上的测试运行程序(例如mstest)运行(请参见此处的屏幕截图)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接