Oracle SQL Developer 3.0でのPL/SQLユニット・テストの実行

<このテキストを削除しないでください。これは、ブラウザ実行時に生成される"主要"なトピック一覧のプレースホルダです。>

目的

このチュートリアルでは、Oracle SQL Developer 3.0でPL/SQLコードのユニット・テストを実行する方法について説明します。

所要時間

約30分

概要

SQL Developerのユニット・テスト・フレームワークには、各テスト・ケースに対して一連の連続したステップが含まれます。 また各ステップには、ステップ実行前のユーザー入力や、テスト実行中のステップに対するフレームワーク・アクティビティが含まれます。次に、一連のステップ内容を示します。

  1. テスト対象オブジェクトの特定
  2. 開始処理の実行
  3. ユニット・テスト・オブジェクトの実行
  4. ユーザー入力: 期待される戻り値(結果)と検証ルールの特定
  5. 終了処理の実行

前提条件

このチュートリアルを始める前に以下のことを確認してください。

従業員への賞与支給プロシージャの作成

HRスキーマに、 AWARD_BONUSという名前のPL/SQLプロシージャを作成します。このプロシージャは、commission_pctを持つ従業員の賞与を計算します。 AWARD_BONUSプロシージャのInputパラメータは、emp_idsales_amtです。 emp_idによって従業員が特定され、sales_amtを使用して賞与が計算されます。 以下の手順を実行します。

.

デスクトップにSQL Developerアイコンがインストールされている場合、アイコンをクリックしてSQL Developerを起動したら、ステップ4へ進みます。デスクトップにアイコンがない場合は、次の手順を実行して、SQL Developer 3.0をデスクトップから直接起動するためのショートカットを作成します。

SQL Developer 3.0がインストールされているディレクトリを開き、「sqldeveloper.exe」(Windowsの場合)または「sqldeveloper.sh」(Linuxの場合)を右クリックして「Send to」→「Desktop (create shortcut)」を選択します。

 

.

デスクトップ上に、Shortcut to sqldeveloper.exeが作成されています。 このアイコンをダブルクリックして、SQL Developer 3.0を開きます。

注: アイコンの名前を変更するには、アイコンを選択してから[F2]キーを押し、新しい名前を入力します。

 

.

Oracle SQL Developerが表示されます。

 

.

Connections」を右クリックして、「New Connection」を選択します。

 

.

以下の情報を入力し、「Test」をクリックします。

Connection Name: HR_ORCL
Username: hr
Password: <使用するパスワード>
Save Password」チェック・ボックスを選択します。
Hostname: localhost
Port: 1521
SID: <使用するSID>

 

.

左下(Helpボタンの上)に表示される接続ステータスを確認します。 Successと表示されているはずです。 「Save」をクリックします。 「Connect」をクリックします。

 

.

次に、プロシージャを作成する必要があります。 SQL Worksheetウィンドウで、以下のスクリプトを入力して「Run Script」をクリックします。 このコードは、前提条件の項でzipファイルをダウンロードしたディレクトリにあるaward_bonus.sqlファイルにも含まれています。

create or replace
PROCEDURE award_bonus (
emp_id NUMBER, sales_amt NUMBER) AS
commission REAL;
comm_missing EXCEPTION;
BEGIN
SELECT commission_pct INTO commission
FROM employees
WHERE employee_id = emp_id;

IF commission IS NULL THEN
RAISE comm_missing;
ELSE
UPDATE employees
SET salary = salary + sales_amt*commission
WHERE employee_id = emp_id;
END IF;
END award_bonus;

 

.

プロシージャが正常に作成されました。 次の項では、ユニット・テスト・リポジトリ用のデータベース・ユーザーを作成します。

 

テスト・リポジトリ用のデータベース・ユーザーの作成

ここでは、UNIT_TEST_REPOSという名前のデータベース・ユーザーを作成します。 ユニット・テスト・リポジトリのデータを保持するためにこのユーザーを作成します。

次の手順を実行します。

.

SYSユーザーに対して接続を作成します。 「Connections」を右クリックして、「New Connection」を選択します。

 

.

次の情報を入力して、「Connect」をクリックします。

Connection Name: sys_orcl
Username: sys
Password: <使用するsysパスワード>
Save Password」チェック・ボックスを選択します。
Role: SYSDBA
Hostname: localhost
Port: 1521
SID: <使用するSID>

 

.

接続が正常に作成されました。 「sys_orcl」接続を開き、「Other Users」を右クリックして「Create User」を選択します。

 

.

以下の情報を入力して、「Roles」タブを選択します。

User Name: unit_test_repos
Password: <使用するパスワード>
Default Tablespace: USERS
Temporary Tablespace: TEMP

 

.

Connect」ロールと「Resource」ロールを選択し、「Apply」をクリックします。

 

.

unit_test_reposユーザーが正常に作成されました。 「Close」をクリックします。

 

.

次に、unit_test_reposユーザーへの接続を作成します。 このユーザーが、ユニット・テスト・リポジトリのデータを保持します。 「Connections」を右クリックして、「New Connection」を選択します。

 

.

次の情報を入力して、「Connect」をクリックします。

Connection Name: unit_test_repos_orcl
Username: unit_test_repos
Password: <使用するパスワード>
Save Password」チェック・ボックスを選択します。
Hostname: localhost
Port: 1521
SID: <使用するSID>

unit_test_reposユーザーとunit_test_repos_orcl接続が正常に作成されました。

 

ユニット・テスト・リポジトリの作成

ユニット・テストを作成するには、ユニット・テスト・リポジトリを作成する必要があります。 先ほど作成したユーザーのスキーマ内にこのリポジトリを作成します。 次の手順を実行します。

.

Tools」→「 Unit Test」→「Repository」→「Select Current Repository」の順に選択します。

 

.

unit_test_repos_orcl」接続を選択し、「OK」をクリックします。

 

.

ここでは、新規のリポジトリを作成します。 「Yes」をクリックします。

 

.

この接続には、リポジトリを作成するために必要な権限が付与されていません。 「OK」をクリックし、適用する権限を表示します。

 

.

sysユーザーとしてログインし、「OK」をクリックします。

 

.

grant文が表示されます。 「Yes」をクリックします。

 

.

UNIT_TEST_REPOSユーザーには、いくつかの必須表に対するselectアクセスが必要です。 「OK」をクリックします。

 

.

grant文が表示されます。 「Yes」をクリックします。

 

.

この時点で、UNIT_TEST_REPOSユーザーにはリポジトリ所有者を管理する権限がありません。 「OK」をクリックし、実行されるgrant文を表示します。

 

.

grant文が表示されます。 「Yes」をクリックします。

 

.

リポジトリが作成される間、進捗ウィンドウが表示されます。

 

.

リポジトリが正常に作成されました。 「OK」をクリックします。

 

ユニット・テストの作成

ここまででユニット・テスト・リポジトリは作成されているため、このチュートリアルの前半で作成したPL/SQLプロシージャに対してユニット・テストを作成します。 次の手順を実行します。

.

View」→「Unit Test」の順に選択します。

 

.

Unit Testナビゲータで「Tests」を右クリックし、「Create Test」を選択します。

 

.

Select Operationで、AWARD_BONUSプロシージャの作成に使用した「HR_ORCL」接続を選択します。

 

.

Procedures」を開いて「AWARD_BONUS」を選択し、「Next」をクリックします。

 

.

Specify Test Nameウィンドウで、Test NameにAWARD_BONUSが指定されており、「Create with single Dummy implementation」が選択されていることを確認したら、「Next」をクリックします。

 

.

Specify Startupウィンドウで「」をクリックして、ドロップダウン・リストから「Table or Row Copy」を選択します。

 

.

Source TableにEMPLOYEESと入力し、「OK」をクリックします。 テストの影響を受ける表が一時表に保存され、この表に対する問合せが自動的に生成されます。

 

.

Next」をクリックします。

 

.

Specify Parametersウィンドウで、EMP_IDの入力文字列を177に変更し、SALES_AMTを5000に変更したら、「Next」をクリックします。

 

.

Specify Validationsウィンドウで「」を選択して、プロセス検証を作成します。

 

.

ドロップダウン・リストから「Query returning row(s)」を選択します。

 

.

次の問合せを指定して、「OK」をクリックします。 この問合せは、ユニット・テストによって実行された変更の結果を調べる問合せです。

SELECT * FROM employees
  WHERE employee_id = 177 and salary = 9400;

 

.

Next」をクリックします。

 

.

Specify Teardownウィンドウで「」をクリックして、ドロップダウン・リストから「Table or Row Restore」を選択します。

 

.

Row IdentifierはPrimary Keyのままにして、「OK」をクリックします。

 

.

Next」をクリックします。

 

.

Finish」をクリックします。

 

.

Tests」を開きます。 作成したテストがリストに表示されます。

 

ユニット・テストの実行

ここでは、ユニット・テストを実行し、各種の値が正しく動作するかどうかを確認します。 次の手順を実行します。

.

左側のナビゲータで、「AWARD_BONUS」テストを選択します。 右側のパネルにテストの詳細情報が表示されます。

 

.

Debug Implementation「」ボタンをクリックして、テストを実行します。

 

.

結果が表示されます。 テストが正常に実行されたことを確認します。 「Close」をクリックします。

 

.

ナビゲータで「AWARD_BONUS」を開き、詳細ノードを表示します。

 

.

ここで、従業員に歩合比率が設定されていない場合のテストを実行し、何が起きるかを確認します。 この同じテストに対して別の実装を作成し、テスト・パラメータを変更することができます。 「AWARD_BONUS」を右クリックし、「Add Implementation」を選択します。

 

.

Test Implementation Nameにempty_comm_pctと入力し、「OK」をクリックします。

 

.

左側のナビゲータで「empty_comm_pct」を選択し、この実装に対するテストの詳細を表示します。

 

.

EMP_IDのInputパラメータを101に変更し、SALES_AMTを5000に変更します。 再度、Debug Implementation「」をクリックします。

 

.

Yes」をクリックして、テストを実行する前に変更を保存します。

 

.

エラーが発生したことを確認します。 この従業員に対するcommission_pctが存在しないため例外が発生したことが、このエラーから分かります。 作成したテストにこの例外を指定する必要があります。 「Close」をクリックします。

 

.

Expected Resultで「Exception」を選択し、その隣のフィールドに6510と入力します。 これは、例外のエラー・コードが6510である場合はエラーを発生させないという意味になります。Debug Implementation「」をクリックします。

 

.

Yes」をクリックして、変更を確定します。

 

.

例外が処理されたため、今回はテストが正常に実行されたことを確認します。 「Close」をクリックします。

 

.

この時点でテストを実行し、結果を保存します。 Run「」をクリックします。

 

.

両方の実装に対するテストの実行が、その結果とともに保存されています。

 

まとめ

このチュートリアルで学習した内容は、以下のとおりです。

参考資料

Oracle SQL Developerの詳細については、下記を参照してください。

関連ドキュメント

説明

オンライン・ヘルプ

オンライン・ヘルプにアクセスするには、Oracle SQL Developerで「Help」メニューを選択し、 関連するトピックを検索します。

OTNのOracle SQL Developerサイト このページには、ドキュメント、ダウンロード、チュートリアルなど、Oracle SQL Developerに関するすべての情報が記載されています。

Hardware and Software Engineered to Work Together 会社情報 |オラクルとサン | Oracle RSS Feeds | 採用情報 | お問い合わせ | サイトマップ | 情報保護基本方針 | ウェブサイトのご使用条件 | 個人情報保護基本方針