使用不同DPI设置编码UI测试



我有两个主要问题,都取决于DPI设置:

  1. 如何使用编码UI测试测试不同的DPI设置?
  2. 我怎么能检查我所有的窗体,对话框在我的项目,如果有的话控件是可见的(即不截断)

我们的项目是96 DPI编写的。在Windows中,DPI有三种设置:

  • 更小- 100% = 96 DPI
  • 中- 125% = 120 DPI
  • 较大- 150% = 144dpi

编码UI测试是否适合如此复杂的任务?或者你有什么建议吗?

如果你需要进一步的信息,我很乐意回答。我不认为任何代码是需要的,因为它只是一个普通的winforms应用程序,我正在寻找一种方法来覆盖任何winform应用程序

编码UI用于测试应用程序的功能。不是为了测试外观。所以一般编码UI不适合检查屏幕颜色、字体或文本中的换行符。然而,Coded UI确实提供了一个CaptureImage()方法,所以在测试的任何时候,你都可以编写这样的代码:

Image img = UITestControl.Desktop.CaptureImage();
Image img = this.UIMap.UIYourApplicationsWindow.CaptureImage();
Image img = this.UIMap.UIYourApplicationsWindow.UISubWindow.UISubSub.CaptureImage();
... followed by:
img.Save( ... filename ... );
TextContext.AddResultFile(... filename ... ) 

我已经使用了CaptureImage()方法,但没有实验是否进行屏幕捕获或是否使用底层图像文件。

也有一个MSDN博客可能会有所帮助。见http://blogs.msdn.com/b/gautamg/archive/2010/04/08/how-to-do-image-comparison-in-coded-ui-test.aspx

如果所有控件在不同的DPI设置中都是可见的(窗体,对话框),那么我认为没有任何问题。您需要在所有表单、按钮和对话框(任何控件)上记录断言,以验证"存在",而仅在一个DPI上说100%,然后在所有其他DPI设置上重复测试执行。请试一试,并让我们知道结果。

-Prasant

这里我找到并调整了一小段代码片段。它是用c#编写的。

在此代码中,我们将两个Image对象转换为Base64 String。通过对比Base64 string,我们可以知道图像是否相同。代码如下:

public static bool ImageCompareString(Image firstImage, Image secondImage)
{
    var ms = new MemoryStream();
    firstImage.Save(ms, ImageFormat.Png);
    String firstBitmap = Convert.ToBase64String(ms.ToArray());
    ms.Position = 0;
    secondImage.Save(ms, ImageFormat.Png);
    String secondBitmap = Convert.ToBase64String(ms.ToArray());
    if (firstBitmap.Equals(secondBitmap))
    {
        return true;
    }
    else
    {
        return false;
    }
}

最新更新