ダウンロードはこちらから
AutoIt は Windows 用のプログラム言語です。主に Windows の GUI 操作自動化に使用します。
詳しいことは、ここでは省きます。
今回、このテスティングフレームワークを作成したのは、
「AutoIt で GUI の自動テストを組んだとき、テストが失敗したときのログ出力を
しっかり書いておかないと、原因がわかりにくい」と感じたからです。
まずはアサーションの提供から
今回リリースした autest では、他のテスティングフレームワークに似たアサーションに対応しています。サンプルを紹介します。
#include "../../include/autest.au3" $NotepadClassName = "[CLASS:Notepad]" $strSendTest = "hello world." AUTEST_ASSERT_TRUE( Run("notepad.exe") ) AUTEST_EXPECT_TRUE( WinWaitActive($NotepadClassName, "", 5) ) AUTEST_EXPECT_TRUE( ControlSend($NotepadClassName, "", "Edit1", $strSendTest) ) AUTEST_EXPECT_STREQ( $strSendTest, ControlGetText($NotepadClassName, "", "Edit1") ) AUTEST_ASSERT_TRUE( WinClose($NotepadClassName) ) ; 保存しますかダイアログが出るので、ここでタイムアウト失敗する AUTEST_ASSERT_TRUE( WinWaitClose($NotepadClassName, "", 5) )
こちらのサンプルは
- メモ帳を起動
- 「Hello World.」と入力し
- 入力内容を検証したのち
- メモ帳を終了します(保存ダイアログが出るので、この処理はタイムアウトし失敗します)
実行した画面がこちらになります。
コンソールにはこのようなメッセージが出力されます。
sample.au3:30 error: Value of WinWaitClose($NotepadClassName, "", 5) Actual: 0 Expected: True
このメッセージから、
sample.au3 ファイルの 30行目 で WinWaitClose($NotepadClassName, "", 5) が 0 を返して失敗したということがひと目でわかります。
ビルド方法
autest のアサーション関数は通常の AutoIt のコンパイル方法でもエラーにならないよう設計されていますが、ファイルや行、コードの詳細を出力するには専用のビルド手順が必要になります。こちらが先ほどのサンプルの Makefile になります。
SOURCES = sample.au3 build: DEFAULT_TARGETS include $(AUTEST_ROOT)/toolchain/commondefs
Make 用の定義などはすべて commondefs ファイルに記述されています。
ユーザーが記述するのは以上になります。
あとは普通に Make するだけです。
どういう仕組みか
Make で何をしているかというと、- SOURCES で定義されたファイルを '#' を "__sharp__" に置換して .obj/*.c ファイルに出力
- .c ファイルをプリプロセッサで処理し "__sharp__" を '#' に戻して *.pau3 ファイルに出力
(その他 AutoIt の構文に合わせて置換しています) - .pau3 ファイルを AutoIt で実行ファイルにコンパイル
C プリプロセッサを使用して、関数引数にファイル名や行、引数の文字列を付加することで、
先に示した出力を得られるようになります。
0 件のコメント:
コメントを投稿