3.1 テストできるプログラムかどうかを確認する
単体テストの対象とするCOBOLプログラムがテストできるかどうか確認する手順です。
単体テスト支援が対象とするCOBOLプログラムは,プログラム定義の翻訳単位(内側のプログラム定義も含む)です。この翻訳単位をコンパイルして生成したプログラムのことをテスト対象のプログラムといいます。
単体テスト支援を使用するときの注意
-
単体テスト支援では,1つのテストプロジェクトで1つのCOBOLソースファイルをテスト対象にできます。
-
クラス定義,インタフェース定義,および関数定義の翻訳単位は,単体テスト支援での単体テストはできません。ただし,単体テストの対象とするプログラム定義の翻訳単位から,上記または別のプログラム定義の翻訳単位を呼び出すことはできます。
-
1つのCOBOLソースファイルに複数の最外側のプログラムがあるときは,最外側のプログラムごとにテストプロジェクトを作成する必要があります。
-
プログラム定義の翻訳単位が1つも含まれないCOBOLソースファイルは,単体テスト支援の対象にできません。
-
単体テストでは,ファイルへの入出力処理に代わる操作(シミュレーション)ができます。
-
次に示す呼び出しやアクセスでは,呼び出すプログラム定義やアクセスするファイルがなくても,対象となるプログラム定義の単体テストができます。
-
副プログラム呼び出し(CALL定数,CALL一意名)
単体テスト支援の指定で,呼び出す副プログラム定義を仮定します。副プログラムの手続きはシミュレーションできません。
ただし,stdcall呼び出し規約で呼び出すプログラムの場合は,呼び出す副プログラム定義は仮定されません。そのため,呼び出し先を準備してリンクするか,次に示す方法でcdecl呼び出し規約に沿った単体テストをする必要があります。
・-StdCallFileコンパイラオプションでstdcall呼び出し指示ファイルを指定している場合は,コンパイラオプションを削除する。
・COBOLプログラムで,環境部の外部プログラム節に指定している場合はコメントアウトする。
-
ファイルアクセス
単体テスト支援の指定で,アクセスするファイルを仮定します。
-
-
次に示す呼び出しやアクセスは,単体テストの実行時にシミュレーションできません。単体テストの実行時には実呼び出しや実アクセスが必要です。
-
INVOKE文またはオブジェクトプロパティの参照によるメソッド呼び起こし
-
サービスルーチン呼び出し
-
利用者定義関数呼び出し
-
共通例外処理の例外引き起こし
-
ODBCインタフェース機能によるデータベースアクセス
-
HiRDBによる索引ファイル入出力機能
-
XDMによるデータベース操作
-
OLE2オートメーション機能
-
データコミュニケーション機能によるメッセージ受け渡し
-
-
画面入出力があるプログラムは,単体テストの実行時に画面の操作が必要です。
-
埋め込みSQL文によるデータベースアクセスをするプログラムでは,単体テスト支援の入力はプリプロセス後のCOBOLソースファイルである必要があります。
-
単体テスト支援で単体テストを実行する場合は,常にシングルスレッドで動作します。
COBOLソースファイルの内容と単体テスト支援上での表示が異なる項目
等価規則やCOPY文の展開後の表示などで,COBOLソースファイルの内容と単体テスト支援上での表示が異なる項目があります。異なる項目は次のとおりです。
-
プログラム名,入口名
COBOL2002のプログラム名の構成規則,変換規則に従って変換した名称で扱います。プログラム名の構成規則,変換規則については,マニュアル「COBOL2002 言語 標準仕様編」を参照してください。
-
データ項目を表示するツリーでのデータ項目名
等価規則や,-EquivRuleコンパイラオプションの指定がある場合は,その規則の適用後の名前で表示されます。項目名が明記されていない場合は,名称にはFILLERと表示されます。
等価規則や-EquivRuleコンパイラオプションについては,マニュアル「COBOL2002 言語 標準仕様編」または「COBOL2002 ユーザーズガイド」を参照してください。
なお,-EquivRule,StdCodeコンパイラオプションには対応していません。指定した場合は,-EquivRule,StdCodeコンパイラオプションを指定してコンパイルされますが,単体テストで使用するTDコマンドは,-EquivRuleコンパイラオプションを指定していないときのものと同じになります。
-
ソーステキスト
原文展開後など,COBOLコンパイラで翻訳したあとの文字列が表示されます。
-
行番号
原文展開後などの,COBOLコンパイラが付与した番号が表示されます。これはコンパイルリストの行番号と一致します。