Ranorex:ファイルの検証

Ranorexを利用したテストで、テスト対象アプリに対する操作のみでなく、アプリが出力したファイルを検証したいといったご質問をいただくことがあります。
そのための方法として、Ranorexでは、ファイルの検証や2つのファイルの比較などがおこなえる機能が用意されています。そこで、本記事ではファイルの検証に関する以下の方法をご紹介します。

・ファイルの存在チェック
・ファイル内の文字列チェック
・2つのファイルの比較

オートメーションヘルパーの追加

今回ご紹介するファイル検証に関連する機能は、オートメーションヘルパーに用意されている「FileLibrary」ライブラリに含まれています。オートメーションヘルパーの追加方法については、ユーザーガイド(オートメーション ヘルパーの追加と更新)をご参照ください。

次の方法で、ソリューションに追加したオートメーションヘルパーから、「FileLibrary」ライブラリのメソッドをアクションテーブルに追加できます。

1. Ranorex Studioで、対象のレコ―ディングモジュールを開きます。

2.「新しいアクションの追加」から、「ユーザーコード(User code)」-「ライブラリから選択」で表示される画面において、「FileLibrary」にあるメソッドを選択し、「選択項目を追加」をクリックします。
※選択するメソッドは、以下のご紹介を参考にしてください。

3.User Codeアクションとしてメソッドが追加されます。

ファイルの存在チェック

テスト対象アプリが出力したファイルが特定のフォルダ内に存在するかを確認する方法として、2つのメソッドが用意されています。

[CheckFilesExist] メソッド

指定したフォルダ内に、チェックしたいファイルが1つ以上存在することを検証します。このメソッドでは、チェックしたいファイルのファイル数を事前に指定し、検証タイムアウトの時間(timeout)内に、事前に指定したファイル数と実際にフォルダに存在するファイル数が一致すれば成功、一致しなければ失敗となります。

・設定項目

path(String)絶対パスもしくは相対パスで、チェックしたいファイルが含まれるフォルダのパスを設定します
pattern(String)チェックしたいファイルを設定します(ファイル名および拡張子、または、検索パターンを指定)
※検索パターン:”DemoApp.*”と設定した場合、”DemoApp”で始まるすべてのファイルを検索します
expectedCount(Int32)期待するファイル数を設定します
timeout(Int32)検証タイムアウトの時間を設定します(秒)

・レポート

上記のレポートの例では、expectedCountに「1」と指定していたものの、実際にテストを実行するとフォルダにはファイルが存在せず(ファイル数=0)、期待していたファイル数と異なることから、テストが失敗となっています。


[WaitForFile] メソッド

ファイルの存在チェックをおこなう際に、テストの実行を一時停止することができます。一時停止している間は、ファイルの存在チェックも実施されません。検証タイムアウトの時間(duration)内に、フォルダ内にファイルが存在すれば成功、ファイルが存在しなければ失敗となります。

・設定項目

path(String)絶対パスもしくは相対パスで、チェックしたいファイルが含まれるフォルダのパスを設定します
pattern(String)チェックしたいファイルを設定します(ファイル名および拡張子、または、検索パターンを指定)
※検索パターン:”DemoApp.*”と設定した場合、”DemoApp”で始まるすべてのファイルを検索します
duration(Int32)検証タイムアウト時間を設定します(ミリ秒)
interval(Int32)durationで設定した時間のうち、ファイルの存在チェックを一時停止する時間を設定します(ミリ秒)

・レポート

上記のレポートでは、「test.txt」ファイルが対象のフォルダ内に存在していなかったため、テストが失敗となっています。

ファイル内の文字列チェック

検証したいファイルが、任意の文字列を含むかどうかを検証します。

[ValidateFileContainsText] メソッド

検索したい文字列を設定することで、テスト実行時にファイル内のテキストを検索し、その文字列を含むかどうかを検証します。対象ファイルが文字列を含んでいればテスト成功、含んでいなければテストは失敗となります。

・設定項目

filePath(String)絶対パスもしくは相対パスで、検証したいファイルのパスを設定します(ファイル名、拡張子含む)
text(String)検索したい文字列を設定します
fileEncoding(String)ファイルのエンコードを設定します
※fileEncodingの引数を持たないメソッドの場合、指定ファイルのエンコードは”UTF-8″として処理されます

・レポート

上記のレポートでは、「test」という文字列が「test.txt」ファイルに含まれていないため、テストが失敗となります。

ファイルの比較

ファイルの現新比較でも利用できる、2つのファイルを比較する方法として、2つのメソッドが用意されています。

[ValidateFilesTextEqual] メソッド

2つのファイルの中身を文字列レベルで、テキストが一致するかどうかを比較します。2つのファイルのテキストが一致する場合は成功、一致しない場合は失敗となります。

・設定項目

filePath1(String)絶対パスもしくは相対パスで、比較したいファイルのパスを設定します(ファイル名、拡張子含む)
filePath2(String)絶対パスもしくは相対パスで、比較したいファイルのパスを設定します(ファイル名、拡張子含む)
normalizeLineEndings(Boolean)Trueの場合、ファイルの改行コードを統一します
※normalizeLineEndingsの引数を持たないメソッドの場合、改行コードは”CRLF”に統一して処理されます

・レポート

上記のレポートでは、2つのファイルに含まれるテキストが一致していないため、テストが失敗となります。


[ValidateFilesBinaryEqual] メソッド

ファイルサイズが一致する2つのファイルの中身を、バイナリレベルで比較します。2つのファイルが一致する場合は成功、一致しない場合は失敗となります。

・設定項目

filePath1(String)絶対パスもしくは相対パスで、比較したいファイルのパスを設定します(ファイル名、拡張子含む)
filePath2(String)絶対パスもしくは相対パスで、比較したいファイルのパスを設定します(ファイル名、拡張子含む)

・レポート

上記のレポートでは、2つのファイルが一致していないため、テストが失敗となります。

まとめ

本記事では、Ranorexでファイルの検証や比較をおこなう方法をご紹介しました。
今回ご紹介した機能の詳細は、各ページをご参照ください。

Ranorex オートメーション ヘルパーのSystemLibrary

Automation Helpersによる提供モジュール/メソッド内容のご紹介