2

別のフレームワークとの相互運用性を目的として、OUTパラメータとして呼び出し元に渡されるREFCURSORを開くパッケージで一連のPL/SQLストアドプロシージャを開発しています。私はSQLDeveloperを使用しており、最近、SQLDeveloperに組み込まれているテスト機能の使用を検討し始めました。

SQLDeveloperのユニットテストフレームワークを使用してREFCURSORの結果を検証する方法を探しています。いくつかのページングロジックを開発しましたが、正しく動作していることを確認したいので、正しい行数があり、行番号が適切なページの範囲内にあることを確認できることを期待していました。

私はここで同様の質問を見つけましたが、そのソリューションは、プロシージャの実行後に実際に検証を実行しないため、ユニットテストを完全に役に立たなくします(少なくとも私が知る限り)。誰かがそれを検証する方法を説明したり、Oracleのフォーラムからのソリューションに欠けているものを見せてくれたら、私はそれをいただければ幸いです。

4

2 に答える 2

3

プロセス検証は、SQLDeveloperが処理できない単体テストのデータ型に使用できます。

  1. 実装を作成し、ダミーのプロシージャまたは関数とリンク(同期)します。
  2. テストが成功して完了するようにパラメータと結果を設定します
  3. 示されているテンプレートを使用して、「User Pl/SqlCode」でプロセス検証を作成します

レンプレート:

DECLARE
  l_Cursor  SYS_REFCURSOR ;
BEGIN
  OPEN l_Cursor FOR '<SQL goes here>' ;
  MY_PROCEDURE( l_Cursor ) ;
  <do validation>
  CLOSE l_Cursor;
  IF <not valid> THEN
    RAISE PROGRAM_ERROR ;
  END IF ;
END ;
于 2012-11-16T16:19:35.933 に答える
1

2つのREFCURSORのXML表現を比較することにより、PL / SQLで(SQLDeveloperの単体テストフレームワークではありませんが)同様のことを行いました。

  • 期待される出力をREFCURSORとして返す「期待される」クエリを定義します(通常、デュアルからいくつかの定数を選択します)
  • 「期待される」クエリと「実際の」クエリの両方を実行し、それらの出力をXML /HTML/その他に変換します
  • 出力を比較する

REF CURSORをXMLに変換するには、refカーソルの説明に関するAskTomに示されているように、DBMS_XMLGENを使用できます。

于 2012-09-26T19:37:38.850 に答える