我遇到了在不同版本的操作系统上使用WpfApprovals的问题。我的个人笔记本电脑运行的是Windows 7 Enterprise,而构建服务器运行的是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()调用的库的修改版本,是否有办法在批准文件名中禁用OS信息?
虽然我可以理解这些测试会因不同的主要操作系统版本而失败,但它们不应该在不同的版本中失败。我注意到标准字符串验证程序不强制使用UniqueForOs样式命名。
答案 0 :(得分:2)
好点。
这个Wpf有点棘手,因为一致性总是一个问题,但强制它可能不是最好的主意,尤其是无法覆盖默认行为。虽然我们找到了下一版本的正确解决方案,但这里有一些3.0.5的解决方法
1)复制文件
您只需复制批准的文件即可匹配两个操作系统版本。这很糟糕但不涉及编码。
2)自定义Wpf呼叫
虽然你说这不是一个很容易解决的问题
public static void Verify(Control control)
{
ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}
不幸的是这就是它。没有办法拦截这个名字。
感谢您提请我们注意!