Main Content

関数ベースのユニット テストの記述

テスト関数の作成

作成するテスト関数は、メイン関数と個々のローカル テスト関数を含む単一の MATLAB® ファイルであるとします。必要に応じて、ファイル フィクスチャ関数およびフレッシュ フィクスチャ関数を含めることができます。"ファイル フィクスチャ" は、ファイル内のすべてのテストで共有されるセットアップ関数と破棄関数から構成されます。これらの関数は、テスト ファイルごとに 1 回ずつ実行されます。"フレッシュ フィクスチャ" は、各ローカル テスト関数の前後で実行されるセットアップ関数と破棄関数から構成されます。

メイン関数の作成

メイン関数は、すべてのローカル テスト関数を 1 つのテスト配列に収集します。メイン関数の名前はテスト ファイル名に対応し、先頭または末尾が 'test' という語 (大文字小文字は区別されない) でなければなりません。テスト ファイル名の先頭または末尾が 'test' という語でない場合、特定の状況でファイル内のテストが無視されることがあります。このサンプル ケースの場合、MATLAB ファイルは exampleTest.m です。メイン関数は、functiontests を呼び出してテスト配列 tests を生成する必要があります。localfunctionsfunctiontests への入力として使用して、ファイル内のすべてのローカル関数への関数ハンドルの 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

テストの実行

関数ベースのテストを実行すると、テスト フレームワークが以下のタスクを実行します。

  1. ローカル テスト関数で指定されたテストの配列を作成する。

  2. 関数 setupOnce が指定されている場合は、その関数を実行してシステムのテスト前の状態を設定する。

  3. 各テストについて、対応するローカル テスト関数を実行する。関数 setup が指定されている場合は、その関数を実行してからローカル テスト関数を実行する。関数 teardown が指定されている場合は、ローカル テスト関数の実行後にその関数を実行する。

  4. 関数 teardownOnce が指定されている場合は、その関数を実行して、システムをテスト前の状態から元の状態に戻す。

Workflow for running function-based tests

コマンド プロンプトからテストを実行するには、MATLAB テスト ファイルを入力として関数 runtests を使用します。以下に例を示します。

results = runtests('exampleTest.m')

あるいは、関数 run を使用してテストを実行することもできます。

results = run(exampleTest)

テストの実行方法の詳細については、runtestsさまざまなワークフローでのテスト実行を参照してください。

結果の解析

テスト結果を解析するには、runtests または run の出力構造体を調べます。それぞれのテスト結果には、テスト関数の名前、テストがパス、失敗、未完のいずれかであるか、およびテストの実行時間が含まれます。詳細は、テスト ケースの結果の解析失敗したテスト結果の解析を参照してください。

参考

| |

関連するトピック