PL/Unitというテスティングフレームワークを見つけたので使ってみた。結構お手軽にテストできたので、紹介してみる。
意外とこの PL/Unit を紹介しているページが無いのが残念だ。 しかし、手順は簡単なので、PL/SQL でプログラミングすることがある人には試してもらいたい。(品質的な意味で)
インストールのページ にもあるように、データディクショナリを参照するため、権限を持ったユーザで接続する。 結果として、plunit というパッケージが作成される。
PACKAGE には setup, teardown, t_{テスト名} を列挙。 PACKAGE BODY には t_{テスト名} の定義を列挙。
teardown には rollback; を入れるといいと思う。
コマンドラインからの起動は、SQL*Plusから以下のようにすれば良い。
実行すると、t_ 関数毎にテストの成否が列挙される。
で、仕上げに「The following tests failed:」ということで、失敗したテストが表示される。 実用上それほど問題にはならないが、この内容、最後に失敗したテストだけが表示されているようだ。 テスト数が多いと、失敗したテストを探すのに若干手間取るかもしれない。
意外とこの PL/Unit を紹介しているページが無いのが残念だ。 しかし、手順は簡単なので、PL/SQL でプログラミングすることがある人には試してもらいたい。(品質的な意味で)
準備
PL/Unit - Test Driven Development for Oracle から ZIP ファイルをダウンロードした後、中身の install_plunit.sql を実行。インストールのページ にもあるように、データディクショナリを参照するため、権限を持ったユーザで接続する。 結果として、plunit というパッケージが作成される。
テンプレ
最低一つのパッケージが必要。PACKAGE には setup, teardown, t_{テスト名} を列挙。 PACKAGE BODY には t_{テスト名} の定義を列挙。
teardown には rollback; を入れるといいと思う。
PACKAGE
create or replace package TEST_HOGEHOGE is begin procedure setup; procedure teardown; procedure t_order_and_cancel; procedure t_order_and_modify; procedure t_order_cant_modify_after_shipping; end; / show errors
PACKAGE BODY
create or replace package body TEST_HOGEHOGE is -- ヘルパー関数など begin procedure setup is begin update Stock set amount=10 where item_no = '...'; end; procedure teardown is begin rollback; end; procedure t_order_and_cancel is result number; begin result := process_order(MY_ORDER_PKEY); plunit.assert_equals(0, result, 'order successes'); plunit.assert_query_equals_value( 'select amount from Stock where item_no=''hogehoge'' ', 3, '3 hogehoges are still in stock'); result := process_cancel(MY_ORDER_PKEY); plunit.assert_equals(0, result, 'cancel successes'); -- : end; end; / show errors
テストスイート起動
テストの実施に際し、PL/Unit のサイトにはApollo Proというフリーのツールを使うように書いてあるが、WinXP SP3 (32bit)の環境では動かなかった。コマンドラインからの起動は、SQL*Plusから以下のようにすれば良い。
execute plunit.run_all_tests(owner=>'SCOTT', package_name=>'TEST_HOGEHOGE', show_output=>true);
実行すると、t_ 関数毎にテストの成否が列挙される。
で、仕上げに「The following tests failed:」ということで、失敗したテストが表示される。 実用上それほど問題にはならないが、この内容、最後に失敗したテストだけが表示されているようだ。 テスト数が多いと、失敗したテストを探すのに若干手間取るかもしれない。
0 件のコメント:
コメントを投稿