c# - 除非打开 diff 工具,否则 ApprovalTests DiffReporter 不会弹出 diff 窗口

标签 c# unit-testing mstest beyondcompare approval-tests

我最近在 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

更多信息:http://msdn.microsoft.com/en-us/library/jj635153.aspx

关于c# - 除非打开 diff 工具,否则 ApprovalTests DiffReporter 不会弹出 diff 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329713/

相关文章:

c# - 正则表达式情况...多个具有可变空间的组

c# - .NET,如何确定字段是否已为空

c# - DateTime.ToString 问题

asp.net-mvc - 我可以使用同一解决方案中单元测试项目中的 Selenium 来测试 ASP.NET MVC Web 项目吗?

unit-testing - 从 TFS-SDK 查询失败的单元测试?

.net - 如何防止预期的异常破坏调试测试运行?

c# - Unity ViewtoWorldPoint 不工作,我做错了什么?

c# - 单元测试和 Entity Framework

使用数据绑定(bind)进行 Android 单元测试

unit-testing - 如何在单元测试中等待suspendCoroutine?