VfUnit Ver1.0

VfUnitとは、Webtribe/VisualFrameのリッチクライアント(RunClient)を JFCUnit,JUnitを用いて 自動テスト を行うツールです。
JFCUnit付属XML実行モジュールとの差は、RunClientの特性を生かして XMLの記述を簡略化しています。
また、レポート出力についても詳しく出力できるようにしています。

FrameRunner(画面単体テスト用) からの起動を前提としたツールになっています。

このツールは 全てオープンソース にて提供しています。
不具合があった場合の修正、機能追加 などは各自作成、修正してご使用ください。
フリー提供のためMKIでの製品サポートの受付はできませんので、ご了承下さい。

VfUnitは今後もバージョンアップ予定です。
但し、旧バージョンとの互換性の保証は無い予定です。

created by Media Knowledge Industrial Co.,Ltd.

動作環境

VisualFrame もしくは Webtribe の Ver1.2.0_06 以上が必要です。
動作には 以下の外部ライブラリ使用しており、このパッケージ内 libフォルダ に格納しています。

  1. JUnit ver4.1
    http://www.junit.org/
  2. JFCUnit ver2.08
    http://jfcunit.sourceforge.net/
  3. Jakarta Regexp ver1.4
    http://jakarta.apache.org/regexp/
  4. DbUnit 2.2
    http://dbunit.sourceforge.net/

Thanks for JUnit,JFCUnit,DBUnit!!

パッケージ内容

- docsvfunitのJavaDoc
- readme_imagesこのドキュメント内のイメージファイル,リンク先HTMLなど
- sampleサンプル実装
ReadMe.htmlこのドキュメント
VfUnit.propertiesVfUnit実行の為のプロパティファイル。
src.zipVfUnitのソースコード
vfunit.dtdXML記述テストケースのDTD
vfunit-1.0.jarVfUnitのJAR。実行時にクラスパスに設定が必要
vfunit_template.xmlXML記述テストケースのテンプレート(参考資料)

サンプルの実行

このパッケージにはサンプルアプリが含まれています。
どのような事ができるのか? は とりあえず サンプルアプリを動作してみて下さい。
サンプル実行に当たっては、Webtribe/VisualFrame ver1.2.0_06 以上が必要です。

環境設定

Webtribe製品をお使いの方は、 lib ディレクトリ に お手持ちの RunClient.jar, RunClientPatch.jar, RuleCommonClient.jar, RuleCommonClientPatch.jar を上書きして下さい。
(製品版 Ver1.2.0_06以上の必要があります。)
実行にあたっては、Webtribe製品のランタイムライセンス と コントロールサーバの起動 が必要です。
sample/conf/common.wdg にて 起動しているコントロールサーバのパスを設定してください。

VisualFrame製品をお使いの方は、 lib に お手持ちの RunClient.jar, RunClientPatch.jar, RuleCommonClient.jar, RuleCommonClientPatch.jar を上書きして下さい (製品版 Ver1.2.0_06以上の必要があります)
sample/JUnitRun.bat sample/RunClient.bat のクラスパスに ライセンスJAR(VisualFrameRuntimeLicense.jar)を追加し、 vfunit_sample.jar の記述を vfunit_sample_vf.jar に変えてください。

JAVA_HOME の パスが通っていない場合には JUnitRun.bat に JAVA_HOMEの設定記述を追加してください。
このパッケージを日本語を含むディレクトリに配置すると XMLパースに失敗する場合があるため、英数字のディレクトリに 配置するようにしてください。

実行

テスト実行は sample/JUnitRun.bat より行います。
実行は 約2分程 かかります。その間は マウス/キー は触らずに じっと画面を見ててください。。

このサンプルのテスト指定XMLは sample/vfunit_sample.xml です。
テスト完了後には
sample/report/report.html に テスト結果レポート
sample/report/process.html に テスト操作手順書
が出力されます。(テストを無理やり中断すると出力されないかも)

テスト記述方法

テスト記述の方法としては2種類あります。

Javaコードとして記述

p.ne.mki.wedge.pub.vfunit.testcase.VfUnitTestCase を継承して JUnitと同様に public void test****() throws Exception というメソッドを作成 してコードを記述します。
サンプルコードとして sample_src.zip/testcase.CommonCheck.java も参照してください。
※JUnit3 の形式で記述しています。今後、JUnit4の形式にて変更する可能性もあります。

XMLにて記述

Clickなどの操作 は jp.ne.mki.wedge.pub.vfunit.tag.process パッケージ のクラスを使用します。
DataBaseの操作系 は jp.ne.mki.wedge.pub.vfunit.tag.process.db パッケージ のクラスを使用します。
Assertチェック は jp.ne.mki.wedge.pub.vfunit.tag.check パッケージ のクラスを使用します。
XMLの記述形式は vfunit.dtdを参照してください。
記述サンプルとしては vfunit_template.xml を参照してください。

XMLは vfunit.dtd に沿って必ず記述してください。
XmlBuddy のツールを使うと、DTD指定により 入力補完機能や、エラー箇所が分りやすいので オススメです。

動作方法

実行時に使用する XMLファイルパス や、レポート出力場所 などの情報を VfUnitに渡す必要があります。
渡す方法は、2種類あります。

  1. VfUnit.properties のプロパティファイルを実行カレントディレクトリに配置
    KEY=値 の形式で Unicode にて記述してください。
    (テキストエディタで編集した場合は native2ascii をして下さい。 Eclipseのプラグイン プロパティエディタ を 使うと楽に記述できます)
  2. Systemプロパティに設定
    SystemプロパティのKEYにて "VfUnit." + KEY名称 を指定します。
    XML_FILE_PATH を指定する場合には

    java -DVfUnit.XML_FILE_PATH=sample/test.xml junit.textui.TestRunner ・・・

    のように指定します。

両方指定されていた場合には、Systemプロパティの設定 が優先されます。

KEY一覧

XML_FILE_PATH テストXMLのファイルパスを記述します。
resource: から始まる指定の場合は リソースから読込を行い、 http: から始まる指定の場合には URL先から読込を行います。
file: から もしくは 上記以外の場合には ファイルシステムから読込を行います。
ディレクトリ指定の場合は ディレクトリ内の全てのXMLファイルが対象になります。
例外として 「CVS」という名前のディレクトリは除外します。

デフォルトでは 設定はありません。 必ず設定を追加してください。
MAIN_ARGS アプリケーションに渡すJava引数を指定します。製品デフォルトでは 設定はありません。
IS_ERROR_STOP Error発生した時にテストを中断するかどうかを指定します。
true もしくは false を指定してください。
デフォルトでは false になります。
VF_COMPONENT_FIND_NAME_TYPE VF-Componentの名称の検索対象の指定です。
physical もしくは logical を指定してください。
physical の場合は 物理名で検索し、 logicalの場合は論理名で検索します。
デフォルトでは physical になります。
VF_ITEM_FIND_NAME_TYPE VF-アイテムの名称の検索対象の指定です。
physical もしくは logical を指定してください。
physical の場合は 物理名で検索し、 logicalの場合は論理名で検索します。
デフォルトでは physical になります。
REPORT_IS_ENABLE 結果レポートを出力するかどうかの指定です。
true もしくは falseを指定してください。
デフォルトでは true になります。
REPORT_DIRECTORY 結果レポートを出力するかディレクトリパスの指定です。
デフォルトでは ./report/ になります。
REPORT_WRITER_CLASS 結果レポートを出力するクラスです。
jp.ne.mki.wedge.pub.vfunit.reporter.IReportWriter インターフェースを実装した クラスを指定します。
デフォルトでは jp.ne.mki.wedge.pub.vfunit.reporter.ReportTestListener になります。
デフォルトの実装の jp.ne.mki.wedge.pub.vfunit.reporter.ReportTestListener では、 結果をXML形式にて report.xml という名前でファイル出力します。
REPORT_CONVERTER_CLASS 結果レポートXMLをHTMLなどに変換するクラスの指定です。
現在提供している クラスは 以下になります。
  1. jp.ne.mki.wedge.pub.vfunit.reporter.HtmlConverter_Table
    デフォルトのフォーマット形式
  2. jp.ne.mki.wedge.pub.vfunit.reporter.HtmlConverter_Tree
    Tree形式にて 出力します。
  3. jp.ne.mki.wedge.pub.vfunit.reporter.HtmlConverter_TreeError
    Tree形式 & エラーのもののみ 出力します。
このクラスを自作するには jp.ne.mki.wedge.pub.vfunit.reporter.IReportConverter のインターフェースを実装したクラスを指定します。
デフォルトでは jp.ne.mki.wedge.pub.vfunit.reporter.HtmlConverter_Table になります。
DELIMIT_COMPONENT_START 結果レポート出力時に コンポーネント名称記述 する時の 開始文字列の指定です。
DELIMIT_COMPONENT_START=「
DELIMIT_COMPONENT_END= 」
と指定されていた場合には、"「{コンポーネント名称}」をClickする" のようにレポート出力されます。
デフォルトでは 「 になります。
DELIMIT_COMPONENT_END 結果レポート出力時に コンポーネント名称記述 する時の 終了文字列の指定です。
デフォルトでは 」 になります。
DELIMIT_ITEM_START 結果レポート出力時に アイテム名称記述 する時の 開始文字列の指定です。
デフォルトでは 【 になります。
DELIMIT_ITEM_END 結果レポート出力時に アイテム名称記述 する時の 終了文字列の指定です。
デフォルトでは 】 になります。
DELIMIT_ITEM_VALUE_START 結果レポート出力時に アイテムの値を記述 する時の 開始文字列の指定です。
デフォルトでは [ になります。
DELIMIT_ITEM_VALUE_END 結果レポート出力時に アイテムの値を記述 する時の 終了文字列の指定です。
デフォルトでは ] になります。

使用時に 必ず修正が必要なものは 『XML_FILE_PATH』 です。
その他の設定は、初期設定のままで動きます。

JUnitの実行

起動は jp.ne.mki.wedge.pub.vfunit.VfUnitXmlSuite のクラスを JUnit のRunnerに渡します。

junit.textui.TestRunner jp.ne.mki.wedge.pub.vfunit.VfUnitXmlSuite

※junit.swingui.TestRunner(GUI版) は JUnit4では廃止されています。実行時にJUnit3を使用するとGUIでの実行が可能になります。

JUnitが実行できる環境であれば、どこでも実行できます。 バッチファイルに記述するのもよし、Eclipseから実行するのもよし、Antにて記述するのもよし・・・

Eclipseから起動する場合には JUnit実行構成 で jp.ne.mki.wedge.pub.vfunit.VfUnitXmlSuite の 単一テスト実行 を 行います。 Eclipse実行イメージ

テスト結果

テスト結果 は JUnitでの結果画面 と HTML(XML)レポート出力 の両方にて確認できます。
レポートは 実行カレントディレクトリ/report/report.html にて出力されます。
結果情報は ./report/report.xml にも出力されています。 プログラムから情報抜き出して・・・などの場合はこちらが使いやすいかとおもいます。

レポート出力サンプル(HTML)
レポート出力サンプル(XML)

レポートと一緒に テスト操作手順書も出力されます。
実行カレントディレクトリ/report/process.html にて出力されます。 操作手順書サンプル(HTML)
●Eclipseから実行した時の JUnit結果画面
Eclipseから実行した時の JUnit結果画面

拡張方法

XMLタグの追加

XMLでテストケースを記述する場合、記述タグ (<click>など) を追加することができます。
クラスは jp.ne.mki.wedge.pub.vfunit.tag.IVfUnitProcess インターフェースを実装してください。
抽象クラスとして jp.ne.mki.wedge.pub.vfunit.tag.AbstractProcess がありますので、こちらを継承して 作成すると若干楽に作成可能です。

Assert系のタグは jp.ne.mki.wedge.pub.vfunit.tag.check 内のソースを、
処理系のタグは jp.ne.mki.wedge.pub.vfunit.tag.process 内のソースを参考にしてください。

作成したクラスは、junit.jar のリソースとして含まれている VfUnitTagMapping.properties に内容を追加します。
記述は
{タグ名称}={クラス名}
として記述してください。

VfUnitTagMapping.properties は リソースとして読み込みますので、 修正したVfUnitTagMapping.properties は junit.jarよりも "前" にクラスパスに設定して実行するようにしてください。