我最近在 ApprovalTests 上遇到了一个问题,其中 diff 工具(在我的例子中是 BeyondCompare 3;我有一个同事使用 WinMerge 遇到了同样的问题)闪烁打开,然后立即关闭。该工具保持打开状态的唯一方法是在运行测试之前打开该工具。
我正在使用 ApprovalTests 3.6;我知道以前的版本也存在这个问题。
调用Verify的方法非常简单:
[UseReporter(typeof(DiffReporter))]
protected void VerifyTables(IEnumerable<DataTable> tables, bool showSchema = false)
{
Approvals.VerifyAll(tables.Select(t => GetXmlForApproval(t, showSchema).ToString()), "");
}
就 BeyondCompare 而言 -
我在 Visual Studio 中进行 TFS 比较时遇到了这个问题,这是由于 TFS 设置为调用 BCompare.exe 而不是 BComp.exe。因此,我尝试制作一个 BeyondCompareReporter
的自定义实现,它调用 BComp.exe 而不是 BCompare.exe,但在这种情况下使用它并没有什么区别。
最佳答案
这里的问题是单元测试的一些运行者将在单元测试完成后强制关闭(终止)单元测试启动的所有进程。 BeyondCompare 在之前打开的情况下仍能正常工作的原因是进程不是通过单元测试启动的。
我通过两种主要方式看到了这种情况的发生
1) 通过某些版本的 Resharper 测试运行程序运行测试。
解决这个问题的方法似乎就是迁移到最新版本的 resharper。或者,您可以通过 VisualStudio 测试运行程序运行测试
2) 通过 MsTest
的某个版本的测试设置文件 .runsettings 进行测试运行
这里的工作似乎只是删除测试设置文件,尽管我相信实际行是
KeepExecutorAliveAfterLegacyRun
关于c# - 除非打开 diff 工具,否则 ApprovalTests DiffReporter 不会弹出 diff 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329713/