関数ベースのユニット テストの記述
テスト関数の作成
テスト関数は、メイン関数と個々のローカル テスト関数を含む単一の MATLAB® ファイルです。必要に応じて、ファイル フィクスチャ関数およびフレッシュ フィクスチャ関数を含めることができます。"ファイル フィクスチャ" は、ファイル内のすべてのテストで共有されるセットアップ関数と破棄関数から構成されます。これらの関数は、テスト ファイルごとに 1 回ずつ実行されます。"フレッシュ フィクスチャ" は、各ローカル テスト関数の前後で実行されるセットアップ関数と破棄関数から構成されます。
メイン関数の作成
メイン関数は、すべてのローカル テスト関数を 1 つのテスト配列に収集します。メイン関数の名前はテスト ファイル名に対応し、先頭または末尾が 'test' という語 (大文字小文字は区別されない) でなければなりません。テスト ファイル名の先頭または末尾が 'test' という語でない場合、特定の状況でファイル内のテストが無視されることがあります。このサンプル ケースの場合、MATLAB ファイルは exampleTest.m
です。メイン関数は、functiontests
を呼び出してテスト配列 tests
を生成する必要があります。localfunctions
を functiontests
への入力として使用して、ファイル内のすべてのローカル関数への関数ハンドルの cell 配列が自動的に生成されるようにします。以下は、一般的なメイン関数です。
function tests = exampleTest tests = functiontests(localfunctions); end
ローカル テスト関数の作成
個々のテスト関数は、メイン (テスト生成) 関数と同じ MATLAB ファイルにローカル関数として含まれます。これらのテスト関数の名前は、先頭または最後に「test」という単語 (大文字小文字の区別なし) が付いていなければなりません。それぞれのローカル テスト関数は、関数テスト ケース オブジェクト testCase
である単一の入力を受け入れる必要があります。テスト フレームワークが自動的にこのオブジェクトを生成します。テスト関数の作成方法の詳細は、関数を使用する単純なテスト ケースの記述および検証、アサーション、その他の検定の表を参照してください。以下は、スケルトンのローカルテスト関数の典型的な例です。
function testFunctionOne(testCase) % Test specific code end function testFunctionTwo(testCase) % Test specific code end
オプションのフィクスチャ関数の作成
セットアップ コードおよび破棄コードは、テスト フィクスチャ関数とも呼ばれ、システムのテスト前の状態をセットアップし、テストの実行後にシステムを元の状態に戻します。テスト フィクスチャ関数には次の 2 種類があります。テスト ファイルごとに 1 回実行されるファイル フィクスチャ関数と、各ローカル テスト関数の前後に実行されるフレッシュ フィクスチャ関数です。これらの関数はテストの生成には必須ではありません。一般的に、ユニット テストのカプセル化を促進するため、ファイル フィクスチャよりもフレッシュ フィクスチャを使用することをお勧めします。
関数テスト ケース オブジェクト testCase
は、ファイル フィクスチャ関数およびフレッシュ フィクスチャ関数への唯一の入力でなければなりません。テスト フレームワークが自動的にこのオブジェクトを生成します。TestCase
オブジェクトは、セットアップ関数、テスト関数および破棄関数の間で情報を渡すための手段です。TestData
プロパティは、既定では struct
であるため、フィールドおよびデータを簡単に追加できます。一般的に、このテスト データはパスおよびグラフィックス ハンドルなどに使用されます。TestData
プロパティの使用例は、セットアップ関数と破棄関数を使用したテストの記述を参照してください。
ファイル フィクスチャ関数. ファイル フィクスチャ関数を使用して、ファイル内のすべてのテストでセットアップ関数と破棄関数を共有することができます。ファイル フィクスチャ関数の名前は、それぞれ、setupOnce
および teardownOnce
でなければなりません。これらの関数は、ファイルごとに 1 回実行されます。ファイル フィクスチャを使用して、テスト前にパスを設定し、テスト後に元のパスにリセットします。以下は、スケルトンのファイル フィクスチャ セットアップ コードと破棄コードの典型的な例です。
function setupOnce(testCase) % do not change function name % set a new path, for example end function teardownOnce(testCase) % do not change function name % change back to original path, for example end
フレッシュ フィクスチャ関数. フレッシュ フィクスチャ関数を使用して、各ローカル テスト関数の状態をセットアップおよび破棄することができます。フレッシュ フィクスチャ関数の名前は、それぞれ、setup
および teardown
でなければなりません。フレッシュ フィクスチャを使用して、テスト前に新しい Figure を取得し、テスト後に Figure を閉じることができます。以下は、スケルトンのテスト関数レベルのセットアップ コードと破棄コードの典型的な例です。
function setup(testCase) % do not change function name % open a figure, for example end function teardown(testCase) % do not change function name % close figure, for example end
プログラム コード テンプレート
%% Main function to generate tests function tests = exampleTest tests = functiontests(localfunctions); end %% Test Functions function testFunctionOne(testCase) % Test specific code end function testFunctionTwo(testCase) % Test specific code end %% Optional file fixtures function setupOnce(testCase) % do not change function name % set a new path, for example end function teardownOnce(testCase) % do not change function name % change back to original path, for example end %% Optional fresh fixtures function setup(testCase) % do not change function name % open a figure, for example end function teardown(testCase) % do not change function name % close figure, for example end
テストの実行
関数ベースのテストを実行すると、テスト フレームワークが以下のタスクを実行します。
ローカル テスト関数で指定されたテストの配列を作成する。
関数
setupOnce
が指定されている場合は、その関数を実行してシステムのテスト前の状態を設定する。各テストについて、対応するローカル テスト関数を実行する。関数
setup
が指定されている場合は、その関数を実行してからローカル テスト関数を実行する。関数teardown
が指定されている場合は、ローカル テスト関数の実行後にその関数を実行する。関数
teardownOnce
が指定されている場合は、その関数を実行して、システムをテスト前の状態から元の状態に戻す。
コマンド プロンプトからテストを実行するには、MATLAB テスト ファイルを入力として関数 runtests
を使用します。以下に例を示します。
results = runtests('exampleTest.m')
あるいは、関数 run
を使用してテストを実行することもできます。
results = run(exampleTest)
テストの実行方法の詳細については、runtests
とさまざまなワークフローでのテスト実行を参照してください。
結果の解析
テスト結果を解析するには、runtests
または run
の出力構造体を調べます。それぞれのテスト結果には、テスト関数の名前、テストがパス、失敗、未完のいずれかであるか、およびテストの実行時間が含まれます。詳細は、テスト ケースの結果の解析と失敗したテスト結果の解析を参照してください。
参考
runtests
| functiontests
| localfunctions