我在不同版本的操作系统上使用 WpfApprovals 时遇到了问题。我的个人笔记本电脑运行的是 Windows 7 企业版,构建服务器运行的是 Windows 7 专业版。由于 WpfApprovals 在批准文件名中使用操作系统名称,因此测试在构建服务器上失败。
我尝试了多种选项来尝试避免在批准名称中包含操作系统,但是,看起来此行为是硬编码在 WpfApprovals.cs 中...
public static void Verify(Control control)
{
ApprovalResults.UniqueForOs();
ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}
...缺少创建注释掉 ApprovalResults.UniqueForOs() 调用的库的修改版本,是否有办法禁止在批准文件名中包含操作系统信息?
虽然我知道这些测试会在不同的主要操作系统版本上失败,但它们不应该在不同的版本上失败。我注意到标准字符串验证器不会强制使用 UniqueForOs 样式命名。
最佳答案
好点。
这个 Wpf 有点棘手,因为一致性始终是一个问题,但强制它可能不是最好的主意,特别是没有办法覆盖默认行为。当我们找出下一个版本的正确解决方案时,这里有一些 3.0.5 的解决方法
1) 复制文件
您只需复制批准的文件即可匹配两个操作系统版本。这有点糟糕,但不涉及编码。
2) 自定义Wpf调用
虽然您说过不这样做,但这是一个非常简单的修复
public static void Verify(Control control)
{
ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}
不幸的是,就是这样。无法拦截命名者。
感谢您提醒我们注意此事!
关于approval-tests - 控制 ApprovalTests 中 WpfApprovals 中的命名者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060304/