我正在使用Approval Tests。在我的开发机器上,当我的测试结果与批准的不同时,我很高兴DiffReporter
启动TortoiseDiff :
[UseReporter(typeof (DiffReporter))]
public class MyApprovalTests
{ ... }
但是,当在 Teamcity 上运行相同的测试并且结果不同时,测试会失败并出现以下错误:
System.Exception : Unable to launch: tortoisemerge.exe with arguments ...
Error Message: The system cannot find the file specified
---- System.ComponentModel.Win32Exception : The system cannot find the file
specified
显然它找不到 tortoisemerge.exe,这很好,因为它没有安装在构建代理上。但是如果安装了呢?然后每次失败都会启动另一个 tortoisemerge.exe 实例,没有人会关闭它。最终,大量的 tortoisemerge.exe 实例会杀死我们的服务器 :)
所以问题是——应该如何修饰测试以在本地机器上运行 Tortoise Diff 并在构建服务器上报告错误?我知道, #IF DEBUG [UseReporter(typeof (DiffReporter))]
但如果可能的话,我更喜欢另一种解决方案。