C# 认证测试图像与遮罩的对比

C# 认证测试图像与遮罩的对比,c#,.net,approval-tests,C#,.net,Approval Tests,对于不需要比较的区域,是否可以使用遮罩比较两个图像 我设法让它与基本的文件比较工作 [UseReporter(typeof(BeyondCompareReporter))] public void ThenThePageShouldMatchTheApprovedVersion() { SaveScreenshot("page1"); Approvals.VerifyFile(@"C:\page1.png"); } 但我想为我希望改变的区域创建一个面具。在ApprovalTes

对于不需要比较的区域,是否可以使用遮罩比较两个图像

我设法让它与基本的文件比较工作

[UseReporter(typeof(BeyondCompareReporter))]
public void ThenThePageShouldMatchTheApprovedVersion()
{
    SaveScreenshot("page1");
    Approvals.VerifyFile(@"C:\page1.png");
}

但我想为我希望改变的区域创建一个面具。在ApprovalTests中是否可以这样做,或者在与批准的文件进行比较之前,我需要修改屏幕截图并手动应用掩码。或者可以编写自己的验证器吗?

无法屏蔽该区域,以便比较器不会对其进行比较

但是,实际上屏蔽该区域非常容易(即,在调用Verify之前在该区域上放置一个黑色正方形)

或者,您通常可以模拟正在更改的变量

比较器的详细信息: ApprovalFileComparer是一个非常愚蠢的比较器。它对文件格式一无所知,也不知道图像是什么。它只是对字节进行比较。这种简单性允许它在任何地方都能工作,但却消除了它对事物的精明处理能力。这通常不是问题,因为记者们非常聪明。能够渲染、比较和执行差分减法等


快乐测试

那么有可能编写自己的比较器吗?测试失败的是比较器还是报告器?如果它是比较器,那么逐字节比较将不起作用,除非我正在比较一个已经屏蔽的版本。