有人可以提供ImageCompare方法的示例吗?

时间:2014-04-11 16:50:37

标签: c# .net class types static

我正在尝试使用Visual Studio 2013 Pro比较两个图像。 MSDN在ImageComparer.Compare上提供信息(http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.uitesting.imagecomparer.compare.aspx),唉我没有在我的代码中实现它。在我的代码的最后一行,我被告知“当前上下文中不存在名称'比较'”。有人可以帮忙吗?谢谢!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Microsoft.VisualStudio.TestTools.UITesting;


namespace Intranet.SmokeTests
{
public class Intranet_Login : Intranet_Setup
{
    public List<string> IntranetLoginTest(string BrowserURL, string Host, int Port)
    {
            Image expected = Image.FromFile(@"\\webdriver\ImageVerification\Expected\IntranetHome.png");
            Image actual = Image.FromFile(@"\\webdriver\ImageVerification\Actual\IntranetHome.png");

            bool equal = Compare(actual, expected);
    }
}
}

3 个答案:

答案 0 :(得分:3)

你必须这样做:

bool equal = ImageComparer.Compare(actual, expected);

如果要在中使用类的静态成员,则必须始终首先使用该类对其进行限定。否则,编译器将尝试在当前类上找到该成员。

您对IntranetLoginTest可能遇到的另一个问题是它应该返回List<string>的实例,但事实并非如此。我还必须说,我觉得很奇怪你正在用一种方法进行图像比较测试,这种方法会建议它执行认证机制测试。

答案 1 :(得分:1)

1-使用nuget安装System.Drawing.Common

2-来自C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Professional \ Common7 \ IDE \ Extensions \ TestPlatform的引用Microsoft.VisualStudio.TestTools.UITesting.dll

        Image expected = Image.FromFile(@"2020-09-01_15h31_24.png");
        Image actual = Image.FromFile(@"2020-09-01_15h31_30.png");
        Image difference = null;

        var isTestPass = ImageComparer.Compare(actual, expected, out difference);

        if (!isTestPass)
            difference.Save("diff.png");

        Console.ReadLine();

预期 enter image description here

实际 enter image description here

差异 enter image description here

答案 2 :(得分:0)

事实证明,没有添加引用的dll的正确版本。完整的答案在这里:How can I make the namespace locally match what is listed on MSDN?