OutSystemsのユニットテストフレームワーク

JUnitやNUnitのように、ロジック部分(Action)の単体テストをするためのツールがForgeにあります。
Unit Testing Frameworkです。
機能テストや回帰テストははSelenium等の別ツールでテストします。このフレームワークはあくまでロジック部分が担当。

リンク先ではTest Automatorというのも紹介されています。こちらはUIとロジック両方が守備範囲ですが、今回はUnit Testing Frameworkの話です。

公式情報

Forge

http://www.outsystems.com/forge/component-details/387/Unit+Testing+Framework/

pdfのドキュメント(ダウンロードして読むにはDropBoxのアカウントが必要)

OutSystemsの公式のテストおすすめ

インストール

Versionsから最新バージョンをダウンロードして自分の環境にインストールします。

.oapのファイルでダウンロードされますが、私が試したときは、「.oaファイルが見つからない」というようなエラーが出ました。

ファイルパスの長さ制限があるのかもしれません。Cドライブ直下にダウンロードしたファイルを移動したところ無事にインストールできました。

以下、1Action用意してユニットテストを試してみます。

テスト対象の用意

ユニットテストなのでテスト対象はpublicなAction(プログラミングでいうとメソッドに近いイメージ)。

テストを試してみるため、独立したActionを用意します。

OutSystems+Google Maps API(3) Entityの一覧画面でも地図を表示する

で作成したBranches画面のScreen action「Preparation」から、Branch ListをJavaScriptの文字列に変換する部分を切り出してみます。

元のAction

元のスクリーンアクション

Logicレイヤを開き、Actions フォルダを右クリックしてAdd Actionして以下のActionを作成しました。

フローは該当部分をカット&ペーストで持っていけます。ActionのPublicプロパティをYesにするのを忘れずに(パブリッシュも)。

切り出したAction

テストモジュールの用意

同じアプリケーションにテストモジュールを登録することもできますが、パブリッシュするときに一緒に上がってしまうので、テスト用のアプリケーションを用意して、その中にテストモジュールを置くことにします。

テンプレートモジュールがあるのでそれを開いてクローンします。

まずは、Unit Testing Frameworkアプリケーションを開く。

WS000000

テンプレートモジュール「UTF_Template」を開きます。

UTFTemplatを選択

Module→Cloneして新しいテストモジュールを作成。ちなみにこの段階では、Independent Modulesの下にテストモジュールが配置される。

Templateをクローン

テストActionを用意

Independent Modules下の作成したモジュール(GmapDemoUnitTestと名付けています)を開き、テスト対象のActionへの参照を追加します。

Service Studio上部の「Manage Dependencies」のアイコンをクリック。

開いたダイアログ上で、テスト対象モジュール名の一部を左上のテキストボックスに入力して検索。

先ほど作ったテスト対象Action「BranchesToJSString」とそこでデータ型として利用しているBranch Entityを参照に追加して「OK」。

テストプロジェクトでテスト対象を参照

では、テストActionを作成します。テストActionはSOAPのWebメソッドとして実装します。

UnitTestWebServiceTemlateの下にテンプレートActionがあるので適当に名前を変えて使いましょう(下の例では変えていません)。

テストAction例。テスト対象がBranch Listを要求するのでローカル変数としてBranchとBranchListを追加してあります。

AssignとListAppendで2要素のBranch Listを作って「BranchesToJSString」Action(テスト対象)に渡しています。

フレームワークが提供するAssert系Actionをそのあとで呼ぶ形になっています。

テストアクション

テスト実施

準備ができたらパブリッシュしてブラウザで開きましょう。

こんな画面になるはず。テスト対象のモジュールが自動でリストアップされるので実施したいテストのRunをクリック。

なお、日本語の説明文が表示されていますが、これはテストモジュールのDescriptionに設定した値です。

テスト実行画面

失敗例

失敗例

FailedクリックでJUnitなんかと同じように期待されている値に対して実際に何が返ってきたか教えてくれます。

エラーアクション

成功例
成功例

シェアする

  • このエントリーをはてなブックマークに追加

フォローする