前準備
Droolsの環境とルールを作成しておきます。
↓環境構築 takeiteasy-09.net
↓オブジェクトとルール作成 takeiteasy-09.net
テストの作成
以前に作成したルールがちゃんと動作するかを確認するため、テストを作成します。
プロジェクト画面から「アセットの追加」をクリックします。
「テストシナリオ」を選択します。
テストシナリオ名を入力し、パッケージはプロジェクトを選択します。
テストを入力する画面が表示されます。「GIVEN」列がテスト時に使用する情報(ファクト)、「EXPECT」列が想定される結果情報になります。
今回の場合、本のタイトルから値段を得るため、ここには本のタイトルを入力することになります。
「GIVEN」列の「INSTANCE1」をクリックするとデータオブジェクトの選択画面が表示されるので、ここから本のタイトルになるプロパティ を選択し、「データオブジェクトの挿入」ボタンをクリックします。
「GIVEN」列の情報が選択された内容に変わります。
続いて、「EXPECT」列の「INSTANCE2」をクリックし、データオブジェクト選択画面から本の値段になるプロパティ を選択し、「データオブジェクトの挿入」ボタンをクリックします。
「EXPECT」列の情報が更新されます。
テストデータの入力
このプロジェクトでは本が二冊「入門Java」と「独習C++」の値段を返すルールを作成していますので、まずは「入門Java」の値段が正しく判別できるかの確認テストを書いてみます。
1行目の「Senario description」にはテストの説明を入力します。「GIVEN」列の「title」には値段を調べるための本のタイトルを入力、「EXPECT」列の「price」には期待される値段を入力します。
「保存」ボタンをクリックして入力したデータを保存し、「再生」ボタンをクリックするとテストが実行されます。すると、テストレポートが表示され、テスト結果を確認することができます。
もう一冊の「独習C++」のテストも追加してみます。表を右クリックし、メニューの中の「行を下に追加」をクリックします。
一冊目の入力と同じ要領で二冊目の情報を入力します。
これでテストを実行してみます。 テストレポート画面のシナリオ数が増えていることがわかるかと思います。
このテストシナリオでは「入門Java」だったら値段は「2500」であることを期待する、「独習C++」だったら値段は「3000」であることを期待する、という内容になります。
ですので、例えば「入門Java」の値段の期待する内容を「2800」とするとテストが失敗し、以下のようなテストレポートとなります。
テストが失敗していること、期待値と合っていない箇所が赤字になります。
この時、表の赤字部分にマウスカーソルを当てると実際の値とどう違ったかが確認できます。
吹き出し中には「保持」と「適用」のボタンが表示されていますが、それぞれ以下の内容となります。
保持
テストケースが正しいと判断する場合に選択します。つまり次のアクションとしてはルールの内容を見直すこと(ルールが間違っていないか)になります。
適用
テストケースが違っていると判断する場合に選択します。テストケースとして期待する値が間違っており、実際に返却される値が正しいと判断されるので、こちらを選択するとテストケースが修正されます。(「2800」→「2500」に修正される)