1

私は utplsql を使用するのが初めてなので、理解していない可能性があることをお詫びします。私の問題は、テストスイートを作成したところです...

CREATE OR REPLACE PACKAGE BODY ut_test_pkg
IS 
   LP_business_date DATE;
   PROCEDURE ut_setup
   IS
   BEGIN
      select nvl(business_date,trunc(sysdate))
      into LP_business_date
      from my_ut_test_params;   
   END ut_setup;

   PROCEDURE ut_teardown
   IS
   BEGIN
      NULL; 
   END ut_teardown;

   PROCEDURE ut_ttable(I_business_part_date IN DATE)
   IS    
      L_dummy NUMBER:=0;      
   BEGIN
      select count(*) 
      into L_dummy
      from mytable
      where business_part_date=to_date('11/05/2013','dd/mm/yyyy')
      and length(trim(cust_order_no))>0;
      utassert.eq (
         'Successful CUST_ORDER_NO NOT EMPTY',
         L_dummy,
         0
      );  
      dbms_output.put_line('L_dummy ' || L_dummy);
   END ut_ttable;         
END ut_mytest_pkg;
/

ここで、utplsql を使用してテストを定義します...

BEGIN
   utsuite.add ('MY TEST SUITE');   
   -- Add two packages for testing
   utpackage.add ('MY TEST SUITE', 'ut_test_pkg');
END;
/

今、私はテストスイートを実行しています...

set serveroutput on
begin
   utplsql.testSuite('MY TEST SUITE',recompile_in=>false);
end;
/

UT_SUITE テーブルにクエリを実行すると、実行回数が増加し、最後のステータスが SUCCESS であることがわかりますが、失敗する条件を意図的に追加したため、テスト プロシージャ it_table を実行しているとは思いません。

また、いくつかの印刷ステートメントを入れましたが、バッファーに印刷されていません。

私が間違っているかもしれないことを誰かが知っていますか?

ああ、最後にもう 1 つ..UTR エラーは、失敗していることも教えてくれません。

ありがとう

4

2 に答える 2

1

問題は、たとえば package がある場合、Manage_carsそのパッケージに関連するすべてのテスト コードが package に含まれている必要があることut_Manage_carsです。utplsql では、すべてのテスト パッケージにut_接頭辞を付ける必要があります (本当に必要な場合は、この接頭辞を何らかの方法で変更できます...とにかく、テスト手順を含む各パッケージには接頭辞が必要です)。

したがって、この場合、パッケージをテスト スイートに追加する場合は、次のようにします。

utPackage.add('my_suite','Manage_cars');

スイートにパッケージを追加するときは、テストが必要なコードを含むパッケージを追加することに注意してください。アサートおよびその他の utplsql 関連コードを含むコードではありません (配置する必要がありますut_Manage_cars) 。

これが役立つことを願っています..返信がない場合は、できるだけ早く返信します:)

于 2013-05-28T08:28:33.820 に答える
1

実際には、実行する特定のパッケージなしでテストを実行できます (スタンドアロン テスト)。これを行うには、テスト パッケージを通常どおりに記述し、テスト スイートの定義で、utpackage.add() に以下のパラメーターを追加します。

 samepackage_in => TRUE

また、この場合は必ずパッケージ名全体を指定してください。したがって、上記の例では次のようになります。

utPackage.add('my_suite','ut_Manage_cars', samepackage_in => TRUE);

これは、テスト対象のパッケージにテスト コードが含まれている場合に実際に使用されます。ただし、複数のパッケージや統合のような機能をテストできるテスト コードのみを含むパッケージを作成するためにも使用できます。これをこのように使用すると、パッケージ名は ut_ プレフィックスで始まる必要はありませんが、推奨されます。

于 2016-07-06T06:56:04.660 に答える