1

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

  1. 如何使用编码的 UI 测试测试不同的 DPI 设置?
  2. 如果所有控件都可见(即未截断),我如何检查项目中的所有表单、对话框

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

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

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

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

4

3 回答 3

1

编码 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

于 2013-06-06T16:23:02.153 回答
0

Here I have found and tweaked a little code snippet. It is written in c#.

In this code, we are converting two Image objects into Base64 String. By Comparing the Base64 string together , we will know that whether images are same. The Code is below.

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;
    }
}
于 2015-02-12T09:24:14.273 回答
0

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

-普拉桑

于 2013-06-06T16:22:50.530 回答