このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
スクリプトベースのテストの拡張
通常、スクリプトベースのテストでは、明示的に一連の Test
オブジェクトを作成せずに、テスト ファイルを作成してそのファイル名を関数 runtests
へ渡します。明示的なテスト スイートを作成した場合は、スクリプトベースのテストで利用可能な機能が追加されます。これらの機能にはテストの選択と、プラグインを使用したテスト ランナーのカスタマイズが含まれます。追加機能については、関数ベースのユニット テストまたはクラス ベースのユニット テストの使用を検討してください。
テスト スイートの作成
スクリプトベースのテストからテスト スイートを直接作成するには、関数 testsuite
を使用します。より明示的にテスト スイートを作成するには、TestSuite
の matlab.unittest.TestSuite.fromFile
メソッドを使用します。これで、関数 runtests
の代わりに run
メソッドを使用してテストを実行できます。たとえば、ファイル rightTriTolTest.m
内にスクリプトベースのテストがある場合、次の 3 つの方法は同等です。
% Implicit test suite result = runtests('rightTriTolTest.m'); % Explicit test suite suite = testsuite('rightTriTolTest.m'); result = run(suite); % Explicit test suite suite = matlab.unittest.TestSuite.fromFile('rightTriTolTest.m'); result = run(suite);
また、matlab.unittest.TestSuite.fromFolder
メソッドを使用して、指定したフォルダー内のすべてのテスト ファイルからテスト スイートを作成することもできます。スクリプトベースのテスト ファイル内にある特定のテストの名前がわかっている場合は、matlab.unittest.TestSuite.fromName
を使用してそのテストからテスト スイートを作成できます。
テストの選択
明示的なテスト スイートでは、セレクターを使用してスイートを調整します。いくつかのセレクターはクラスベースのテストにのみ適用されますが、テスト名に基づいてスイートのテストを選択できます。
matlab.unittest.TestSuite.fromFile
などのスイート生成メソッド内で、名前と値のペアの引数'Name'
を使用する。selectors
インスタンスおよびオプションのconstraints
インスタンスを使用する。
matlab.unittest.TestSuite.fromFile
などのスイート生成メソッドでこれらの手法を使用するか、スイートを作成し、selectIf
メソッドを使用してそれをフィルター処理します。たとえば、次のリストの 4 つの suite
の値は等価です。
import matlab.unittest.selectors.HasName import matlab.unittest.constraints.ContainsSubstring import matlab.unittest.TestSuite.fromFile f = 'rightTriTolTest.m'; selector = HasName(ContainsSubstring('Triangle')); % fromFile, name-value pair suite = TestSuite.fromFile(f,'Name','*Triangle*') % fromFile, selector suite = TestSuite.fromFile(f,selector) % selectIf, name-value pair fullSuite = TestSuite.fromFile(f); suite = selectIf(fullSuite,'Name','*Triangle*') % selectIf, selector fullSuite = TestSuite.fromFile(f); suite = selectIf(fullSuite,selector)
セレクターまたは名前と値のペアでスイート生成メソッドのいずれかを使用すると、テスト フレームワークはフィルター処理されたスイートを作成します。selectIf
メソッドを使用すると、テスト フレームワークはテスト スイート全体を作成し、その後でフィルター処理します。大規模なテスト スイートでは、この手法はパフォーマンスに影響を及ぼす場合があります。
テスト診断へのプログラムによるアクセス
特定のクラスでは、フレームワークのテストは DiagnosticsRecordingPlugin
プラグインを使用して、テスト結果の診断を記録します。以下のいずれかを実行した場合、フレームワークでは既定でプラグインが使用されます。
関数
runtests
を使用してテストを実行する。入力なしで関数
testrunner
を使用してテストを実行する。関数
runperf
を使用してパフォーマンス テストを実行する。TimeExperiment
クラスのrun
メソッドを使用してパフォーマンス テストを実行する。
テストを実行した後、TestResult
オブジェクトの Details
プロパティの DiagnosticRecord
フィールドを使用して、記録された診断にアクセスできます。たとえば、テスト結果が変数 results
に保存されている場合、result(2).Details.DiagnosticRecord
にはスイート内の 2 番目のテストの記録された診断が含まれます。
記録された診断は DiagnosticRecord
オブジェクトです。テストの特定のタイプのテスト診断にアクセスするには、DiagnosticRecord
クラスの selectFailed
、selectPassed
、selectIncomplete
、selectLogged
の各メソッドを使用します。
既定では、DiagnosticsRecordingPlugin
プラグインは、検定エラーと、詳細レベル matlab.automation.Verbosity.Terse
でロギングされたイベントを記録します。詳細については、DiagnosticsRecordingPlugin
と DiagnosticRecord
を参照してください。
テスト ランナーのカスタマイズ
フレームワークがテスト スイートを実行する方法をカスタマイズするには、TestRunner
オブジェクトを使用します。TestRunner
オブジェクトを使用すると、次のことが可能です。
withNoPlugins
メソッドを使用して、コマンド ウィンドウで出力を生成しない。runInParallel
メソッドを使用してテストを並列実行する。addPlugin
メソッドを使用してプラグインをテスト ランナーに追加する。
たとえば、テスト スイート suite
を使用してサイレント テスト ランナーを作成し、TestRunner
の run
メソッドを使用してテストを実行します。
runner = matlab.unittest.TestRunner.withNoPlugins; results = runner.run(suite);
プラグインを使用してテスト ランナーをさらにカスタマイズします。たとえば、出力のリダイレクト、コード カバレッジの判定、または警告に対するテスト ランナーの応答方法の変更を行うことができます。詳細については、テスト ランナーへのプラグインの追加と plugins
クラスを参照してください。
参考
plugins
| selectors
| matlab.unittest.constraints
| TestRunner
| TestSuite