2

我在不同版本的操作系统上使用 WpfApprovals 时遇到了问题。我的个人笔记本电脑运行的是 Windows 7 Enterprise,构建服务器运行的是 Windows 7 Professional。由于 WpfApprovals 在批准文件名中使用操作系统名称,因此构建服务器上的测试失败。

我尝试了许多选项来避免在批准名称中包含操作系统,但是,看起来这种行为在 WpfApprovals.cs 中是硬编码的......

    public static void Verify(Control control)
    {
        ApprovalResults.UniqueForOs();
        ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
    }

...没有创建注释掉 ApprovalResults.UniqueForOs() 调用的库的修改版本,有没有办法禁用在批准文件名中包含操作系统信息?

虽然我可以理解这些测试会因不同的主要操作系统版本而失败,但它们不应该在不同的版本中失败。我注意到标准字符串验证器不会强制使用 UniqueForOs 样式命名。

4

1 回答 1

2

好点子。

这个 Wpf 有点棘手,因为一致性始终是一个问题,但强制它可能不是最好的主意,尤其是在无法覆盖默认行为的情况下。虽然我们为下一个版本找出了正确的解决方案,但这里有一些 3.0.5 的解决方法

1) 复制文件
您可以只复制批准的文件以匹配两个操作系统版本。这有点糟糕,但不涉及编码。

2)定制的 Wpf 调用
虽然你说不这样做,但它是一个非常简单的修复

public static void Verify(Control control)
{
    ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}

不幸的是,就是这样。没有办法拦截命名器。

感谢您提请我们注意!

于 2013-11-19T11:35:51.823 回答