テスト・フィクスチャーのセットアップ
「z/OS® 自動化単体テスト・フレームワーク (ZUnit) テスト・ケース」ウィザードがテスト・ケースを生成した後は、そのファイルを編集し、SETUP プログラムにコードを追加することにより、テストの実行に必要なリソースを割り振ります。
始める前に
- 「新規 COBOL z/OS Automated Unit Testing Framework (ZUnit) テスト・ケース・テンプレート」ウィザードまたは「新規 PL/I z/OS Automated Unit Testing Framework (ZUnit) テスト・ケース・テンプレート」ウィザードを使用してテスト・ケースを作成します。
- エディターでテスト・ケース・ファイルを開きます。
このタスクについて
*+---------------------------------------------------------------+
*| 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) ')'
例
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 プログラムでも、プロシージャーの外の、パッケージ・レベルで定義されたグローバル構造の宣言の概念はサポートされています。