テストマクロの使用

テストマクロの使用


ダイアログを開く、アプリケーションを起動する、テキストフィールドに入力するといった、繰り返し行われるアクションをマクロに定義することで、テストスクリプトをモジュール化することができます。この方法によって、より簡単に手動でスクリプトを作成、修正、検査することができます。

マクロを使用したスクリプト例

マクロを使用してスクリプトをモジュール化する方法を説明するために、以下に X-Designer のテストスクリプトからの抜粋を例として示します。この短いスクリプトは以下のアクションを行います。

  1. X-Designer の起動

  2. シェルおよびフォームを含むデザインの作成

  3. フォームに対する変数名の指定

  4. ファイル名を指定したデザインの保存

  5. X-Designer の終了

最上位スクリプトがより読みやすくなるように上記のテストを行うには、マクロプリプロセッサ m4 を使用します。このプリプロセッサはすべての UNIX システムで使用することができます。

上記のテストを行う上位スクリプトは、次のようになります。

    include(Defs.m4)
    StartUp()
    shell   date
    Palette(xd_XmDialogShell)
    Palette(xd_XmForm)
    VariableName(myform)
    SaveDesignAs(mydesign.xd)
    message Test Sequence Over
    shell   date
    Finish()

前述のスクリプトの大部分がマクロ呼び出しで構成されています。構文中のキーワードについては、付録 C「 X-Designer 再現機能のコマンド構文」を参照してください。

Defs.m4 というマクロ定義スクリプトは、以下のとおりです。

define(HandleExpectedWarning,
	in warning_popup
		push warning.OK)

define(StartUp,
	if !IsPseudoColor
		message Non PseudoColor display
		HandleExpectedWarning()
	endif)

define(Palette,
	in ApplicationShell
		push $1)

define(VariableName,
	in ApplicationShell
		multiclick nb_vn_t
		type $1
		key Return)

define(SaveDesignAs,
	in ApplicationShell
		cascade file_menu
			select fm_menu.fm_saveas
		in save_dialog_popup
			doubleclick Text
		type $1
      push save_dialog.OK)

define(Finish,
	in ApplicationShell
		cascade file_menu
				select fm_menu.fm_exit
		if in save_changes_dialog
			push xd_question.xd_question_cancel_b
		endif)

次のコマンドは、 X-Designer 再現に渡される最終スクリプトファイルを作成します。

m4 Test.in > Test.xds

ファイル Test.in が上位スクリプトです。Test.xds は出力ファイルで、このファイルに展開されたマクロを持つ最終スクリプトが含まれます。

前述したファイルに入力し、次に m4 を使用して最終スクリプトファイルを作成し、この例をテストします。テストが終了したら、次のように X-Designer を使用し、Test.xds を再生対象のスクリプトとして指定して X-Designer 再現を実行します。

 xdreplay -f Test.xds  xdesigner

さらに一歩進んで、個々のファイルに X-Designer のウィジェットパレット上のウィジェットの名前を定義し、次に「shell」や「form」などのより抽象的な名前からウィジェット名が特定できるように「Palette マクロ」を定義します。

define(shell, xd_XmDialogShell)
define(form, xd_XmForm)

これで、内部的な名前が一ヶ所に保持されるので、保守および変更をより簡単に行うことができます。

関連項目: