テスト・フィクスチャーのセットアップ

z/OS® 自動化単体テスト・フレームワーク (ZUnit) テスト・ケース」ウィザードがテスト・ケースを生成した後は、そのファイルを編集し、SETUP プログラムにコードを追加することにより、テストの実行に必要なリソースを割り振ります。

始める前に

  • 新規 COBOL z/OS Automated Unit Testing Framework (ZUnit) テスト・ケース・テンプレート」ウィザードまたは「新規 PL/I z/OS Automated Unit Testing Framework (ZUnit) テスト・ケース・テンプレート」ウィザードを使用してテスト・ケースを作成します。
  • エディターでテスト・ケース・ファイルを開きます。

このタスクについて

テスト・ケースを作成すると、ウィザードは SETUP という名前のサブプログラムを生成します。 以下のコード・ブロックは、3 個のテストを含む COBOL テスト・ケースのために作成される SETUP プログラムを示しています。
      *+---------------------------------------------------------------+
      *| SETUP                                                         |
      *|     This program is invoked by the ZUnit Test Runner          |
      *|     prior to each Test to allow for allocation of             |
      *|     resources (e.g., memory, connections) that are            |
      *|     required to create the Test Fixture.                      |
      *|                                                               |
      *| @param TEST-CASE-PTR (input),                                 |
      *|     A pointer-by-value to an area maintained by the           |
      *|     ZUnit Test Runner that identifies the Test Case           |
      *|     and associated resources.                                 |
      *|                                                               |
      *| @param TEST-FIXTURE-PTR (output),                             |
      *|     A pointer-by-reference in which to store the address      |
      *|     of a user-defined structure that represents the Test      |
      *|     Fixture. References to all allocated resources should     |
      *|     be maintained in this structure so that they may be       |
      *|     accessed in the respective Test program, and released     |
      *|     in the TEARDOWN program.                                  |
      *|                                                               |
      *| @param TEST-NAME-PTR (input),                                 |
      *|     A pointer-by-value to an area containing the name         |
      *|     of the Test for which a Test Fixture should be            |
      *|     allocated.                                                |
      *|                                                               |
      *| @param TEST-NAME-LEN (input),                                 |
      *|     A integer-by-value that specifies the length in           |
      *|     bytes of the value contained in parameter                 |
      *|     TEST-NAME-PTR.                                            |
      *+---------------------------------------------------------------+
       IDENTIFICATION DIVISION.
       PROGRAM-ID. 'SETUP'.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       1 FAIL-MESSAGE-TXT PIC X(254).
       1 FAIL-MESSAGE-LEN PIC S9(9) COMP-5.
       LINKAGE SECTION.
       1 TEST-CASE-PTR    POINTER.
       1 TEST-FIXTURE-PTR POINTER.
       1 TEST-NAME-PTR    POINTER.
       1 TEST-NAME-LEN    PIC S9(9) COMP-5.
       1 TEST-NAME        PIC X(254).
       PROCEDURE DIVISION USING BY VALUE TEST-CASE-PTR
                          BY REFERENCE TEST-FIXTURE-PTR
                          BY VALUE TEST-NAME-PTR
                          BY VALUE TEST-NAME-LEN.
           SET ADDRESS OF TEST-NAME TO TEST-NAME-PTR
           EVALUATE TEST-NAME(1:TEST-NAME-LEN)
              WHEN 'TEST001'
      * TODO: Allocate Test Fixture for Test 'TEST001'.
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'
              WHEN 'TEST002'
      * TODO: Allocate Test Fixture for Test 'TEST002'.
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'
              WHEN 'TEST003'
      * TODO: Allocate Test Fixture for Test 'TEST003'.
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'
           END-EVALUATE
           .
       END PROGRAM 'SETUP'.

手順

各テストのテスト・フィクスチャーをセットアップするには、以下の手順を実行してください。

このテストの実行に必要なすべてのセットアップ情報を含めるように、以下のコード・ブロックを変更します。
              WHEN 'TEST001'
      * TODO: Allocate Test Fixture for Test 'TEST001'.
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'
              WHEN 'TEST002'
      * TODO: Allocate Test Fixture for Test 'TEST002'.
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'
              WHEN 'TEST003'
      * TODO: Allocate Test Fixture for Test 'TEST003'.
                DISPLAY 'SETUP (' TEST-NAME(1:TEST-NAME-LEN) ')'

以下のコード・ブロックは、ANAGRAM プログラムをテストするサンプル COBOL テスト・ケースの SETUP プログラムの例を示しています。 これは、4 個のテストのセットアップを含み、プログラムの入出力用のメモリーを割り振ります。
       IDENTIFICATION DIVISION.
       PROGRAM-ID. 'SETUP'.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       1 CEEGTST-SIZE PIC S9(9) COMP-5.
       1 CEEGTST-HEAP PIC S9(9) COMP-5.
       1 FAIL-MESSAGE-TXT PIC X(254).
       1 FAIL-MESSAGE-LEN PIC S9(9) COMP-5.
       LINKAGE SECTION.
       COPY ANAGRAM.
       1 TEST-CASE-PTR    POINTER.
       1 TEST-FIXTURE-PTR POINTER.
       1 TEST-NAME-PTR    POINTER.
       1 TEST-NAME-LEN    PIC S9(9) COMP-5.
       1 TEST-NAME        PIC X(254).
       PROCEDURE DIVISION USING BY VALUE TEST-CASE-PTR
                          BY REFERENCE TEST-FIXTURE-PTR
                          BY VALUE TEST-NAME-PTR
                          BY VALUE TEST-NAME-LEN.
           SET ADDRESS OF TEST-NAME TO TEST-NAME-PTR
           EVALUATE TEST-NAME(1:TEST-NAME-LEN)
              WHEN 'AZUTC001.test001'
      *         setup a valid anagram for test AZUTC001.test001
                PERFORM ALLOCATE-ANAGRMIO
                MOVE 15 TO FIRST-WORD-LEN
                MOVE 'Eleven plus two'
                  TO FIRST-WORD(1:FIRST-WORD-LEN)
                MOVE 15 TO SECOND-WORD-LEN
                MOVE 'Twelve plus one'
                  TO SECOND-WORD(1:SECOND-WORD-LEN)
              WHEN 'AZUTC001.test002'
      *         setup a valid anagram for test AZUTC001.test002
                PERFORM ALLOCATE-ANAGRMIO
                MOVE 14 TO FIRST-WORD-LEN
                MOVE 'The Morse code'
                  TO FIRST-WORD(1:FIRST-WORD-LEN)
                MOVE 14 TO SECOND-WORD-LEN
                MOVE 'Here come dots'
                  TO SECOND-WORD(1:SECOND-WORD-LEN)
      *         SET TEST-FIXTURE-PTR TO NULL
              WHEN 'AZUTC001.test003'
      *         setup a valid anagram for test AZUTC001.test003
                PERFORM ALLOCATE-ANAGRMIO
                MOVE 13 TO FIRST-WORD-LEN
                MOVE 'Snooze alarms'
                  TO FIRST-WORD(1:FIRST-WORD-LEN)
                MOVE 16 TO SECOND-WORD-LEN
                MOVE 'Alas! No more Zs'
                  TO SECOND-WORD(1:SECOND-WORD-LEN)
              WHEN 'AZUTC001.test004'
      *         setup a valid anagram for test AZUTC001.test004
                PERFORM ALLOCATE-ANAGRMIO
                MOVE 10 TO FIRST-WORD-LEN
                MOVE 'Astronomer'
                  TO FIRST-WORD(1:FIRST-WORD-LEN)
                MOVE 11 TO SECOND-WORD-LEN
                MOVE 'Moon starer'
                  TO SECOND-WORD(1:SECOND-WORD-LEN)
           END-EVALUATE
           GOBACK
           .
       ALLOCATE-ANAGRMIO.
      * allocate an instance of struct ANAGRMIO
           INITIALIZE CEEGTST-HEAP CEEGTST-SIZE
           MOVE LENGTH OF ANAGRMIO TO CEEGTST-SIZE
           CALL 'CEEGTST' USING CEEGTST-HEAP CEEGTST-SIZE
                TEST-FIXTURE-PTR OMITTED
           SET ADDRESS OF ANAGRMIO TO TEST-FIXTURE-PTR
           INITIALIZE ANAGRMIO
           .
       END PROGRAM 'SETUP'.

この例は明示的なストレージの割り振りを使用して、後のテスト・エントリー・ポイントと分解エントリー・ポイントでの参照のためのテスト・フィクスチャーの「仕舞い込み」を示しています。 構造 ANAGRMIO が SETUP エントリー・ポイントの working-storage section で GLOBAL と宣言されている場合は、代替方法を使用することができます。 この後の、例えばテスト・エントリー・ポイントでの ANAGRMIO に対する参照は、EXTERNAL キーワードを使用して、ANAGRMIO が実行単位レベルで割り振られていることをコンパイラーに示し、GLOBAL キーワードを使用して割り振られたインスタンスを再使用します。 この方法の方が簡単かもしれませんが、GLOBAL 変数を解放または割り振り解除できないため、この方法は SETUP/TEARDOWN パラダイムに従っていません。 PL/I プログラムでも、プロシージャーの外の、パッケージ・レベルで定義されたグローバル構造の宣言の概念はサポートされています。