ユーザー コード リファレンス:クロスプラットフォームにおけるイメージ比較

クロスプラットフォームにおけるUIテストにおいて、プラットフォームごとにディスプレイの解像度が異なるケースがあります。たとえば、モバイルテストでは、1つのテストケースを複数のデバイスで実行することが一般的です。

このようなテストにおいて、バリデーションのイメージ比較をおこなう場合、実行するプラットフォームに合わせて期待する画像を設定するか、もしくは端末分のテストケースを用意するなど対応が必要となります。

上記において、ユーザーコードを使用した場合、外部の画像ファイルを使用することで、実行されるテストごとに、期待する画像を切り替えることが可能です。

※本記事で紹介しているRanorex APIは、Ranorex v9.3.2にて確認をおこなっています。

※ユーザー コードの機能概要については、こちらの記事をご参照ください。

※本記事で紹介しているRanorex APIについては、API ドキュメントをご参照ください。

以下のユーザーコードは、レコーディングモジュールのアクションテーブルに設定したバリデーション(CompareImage)のアクションをユーザーコードに自動変換したものになります。

public void Validate_TheCat(RepoItemInfo pictureInfo)
{
  CompressedImage TheCat_Screenshot1 = repo.RxMainFrame.TheCatInfo.GetScreenshot1(new Rectangle(0, 0, 402, 263));
  Imaging.FindOptions TheCat_Screenshot1_Options = Imaging.FindOptions.Parse("1;None;0,0,402,263;True;10000000;0ms");
  Report.Log(ReportLevel.Info, "Validation", "Validating CompareImage (Screenshot: 'Screenshot1' with region {X=0,Y=0,Width=402,Height=263}) on item 'pictureInfo'.", pictureInfo);
  Validate.CompareImage(pictureInfo, TheCat_Screenshot1, TheCat_Screenshot1_Options);
}

Validate.CompareImage()メソッドの第2パラメーター(TheCat_Screenshot1)で期待する画像を指定しています。このパラメーターを外部の画像ファイルから取得した画像(型:Bitmap)に置き換えます。以下が修正したコードになります。

画像ファイルは、メソッドのパラメーター(expectedImgPath)として呼び出すようにしています。これにより、テスト実行時に使用する画像ファイルを切り替えてテストをおこなうことができます。

public void Validate_TheCat(RepoItemInfo pictureInfo, string expectedImgPath)
{
  // このコードは、不要になるためコメントアウト
  //CompressedImage TheCat_Screenshot1 = repo.RxMainFrame.TheCatInfo.GetScreenshot1(new Rectangle(0, 0, 402, 263));

  Imaging.FindOptions TheCat_Screenshot1_Options = Imaging.FindOptions.Parse("1;None;0,0,402,263;True;10000000;0ms");
  Report.Log(ReportLevel.Info, "Validation", "Validating CompareImage (Screenshot: 'Screenshot1' with region {X=0,Y=0,Width=402,Height=263}) on item 'pictureInfo'.", pictureInfo);
			
  // 期待値となる画像ファイルの読み込み
  Bitmap expectedImg = Ranorex.Imaging.Load( expectedImgPath );
			
  Validate.CompareImage(pictureInfo, expectedImg, TheCat_Screenshot1_Options);
}

使用方法:

作成したコードは、レコーディングモジュールの User code アクション - ライブラリから選択 にて、対象メソッド名(Validate_TheCat)を選択することで使用できます。

また、このメソッドには、2つのパラメータがあります。

  • 第1パラメーター:バリデーション対象のオブジェクト(型:RepoItemInfo クラス)
  • 第2パラメーター:期待する画像ファイル(型:string

※第2パラメーターの画像ファイルは、絶対パスで指定します。

※上記の方法は、コードを記述したレコーディングモジュールのみで使用することができます。すべてのレコーディングモジュールでコードを使用したい場合は、ユーザーコードコレクションを使用してください。