さまざまなワークフローでのテスト実行
テスト例の設定
テストを実行するためのさまざまな方法を確認するため、クラス ベースのテストおよび関数ベースのテストを現在の作業フォルダーに作成します。クラスベースのテスト ファイルについては、matlab.unittest.qualifications.Verifiable
で紹介されているテスト例 DocPolynomTest
を使用します。関数ベースのテスト ファイルについては、セットアップ関数と破棄関数を使用したテストの記述で紹介されているテスト例 axesPropertiesTest
を使用します。
クラスまたは関数でのすべてのテストの実行
TestCase
クラスの run
メソッドを使用して、単一のテスト ファイルに含まれているテストを直接実行します。テストを直接実行する場合は、Test
配列を明示的に作成する必要はありません。
% Directly run a single file of class-based tests results1 = run(DocPolynomTest); % Directly run a single file of function-based tests results2 = run(axesPropertiesTest);
また、テスト ファイル出力を変数に代入し、関数形式またはドット表記を使用してテストを実行することもできます。
% Create Test or TestCase objects t1 = DocPolynomTest; % TestCase object from class-based test t2 = axesPropertiesTest; % Test object from function-based test % Run tests using functional form results1 = run(t1); results2 = run(t2); % Run tests using dot notation results1 = t1.run; results2 = t2.run;
あるいは、runtests
を使用するか、エディターから、単一のファイルに含まれているテストを実行することができます。
クラスまたは関数での単一のテストの実行
クラス ベースのテスト ファイル内の単一のテストを実行するには、テスト メソッドを入力引数として run
メソッドに指定します。たとえば、テスト testMultiplication
のみを DocPolynomTest
ファイルから実行します。
results1 = run(DocPolynomTest,'testMultiplication');
関数ベースのテスト ファイルは、単一の TestCase
オブジェクトではなく Test
オブジェクトの配列を返します。この配列にインデックスを付けて、特定のテストを実行することができます。ただし、正しいテストが実行されるようにするため、テスト配列内の Name
フィールドを確認する必要があります。たとえば、テスト surfaceColorTest
のみを axesPropertiesTest
ファイルから実行します。
t2 = axesPropertiesTest; % Test object from function-based test
t2(:).Name
ans = axesPropertiesTest/testDefaultXLim ans = axesPropertiesTest/surfaceColorTest
テスト surfaceColorTest
は、配列の 2 番目の要素に該当します。
テスト surfaceColorTest
のみを実行します。
results2 = t2(2).run; % or results2 = run(t2(2));
あるいは、エディターから単一のテストを実行することもできます。
名前によるテスト スイートの実行
グループまたはスイートとして、テストをまとめて実行することができます。runtests
を使用してテスト スイートを実行するために、テスト スイートは、テスト ファイル、テスト クラス、テストを含む名前空間またはフォルダーを表す文字ベクトルの cell 配列として定義されています。
suite = {'axesPropertiesTest','DocPolynomTest'}; runtests(suite);
pwd
を関数 runtests
への入力として使用して、現在のフォルダー内のすべてのテストを実行します。
runtests(pwd);
あるいは、明示的に Test
配列を作成し、run
メソッドを使用してテストを実行することもできます。
テスト配列からのテスト スイートの実行
明示的に Test
配列を作成し、TestSuite
クラスの run
メソッドを使用してテストを実行することができます。この方法を使用する場合は、TestSuite
オブジェクトを明示的に定義するので、その内容を確認することができます。関数 runtests
は TestSuite
オブジェクトを返しません。
import matlab.unittest.TestSuite s1 = TestSuite.fromClass(?DocPolynomTest); s2 = TestSuite.fromFile('axesPropertiesTest.m'); % generate test suite and then run fullSuite = [s1 s2]; result = run(fullSuite);
スイートが明示的に定義されているので、失敗したテストの再実行など、スイートに関する詳細な分析を簡単に行うことができます。
failedTests = fullSuite([result.Failed]); result2 = run(failedTests);
カスタマイズされたテスト ランナーによるテストの実行
カスタム テスト ランナーを定義してプラグインを追加することにより、テストの実行をカスタマイズすることができます。TestRunner
クラスの run
メソッドは TestSuite
オブジェクトに対して実行されます。
import matlab.unittest.TestRunner import matlab.unittest.TestSuite import matlab.unittest.plugins.TestRunProgressPlugin % Generate TestSuite. s1 = TestSuite.fromClass(?DocPolynomTest); s2 = TestSuite.fromFile('axesPropertiesTest.m'); suite = [s1 s2]; % Create silent test runner. runner = TestRunner.withNoPlugins; % Add plugin to display test progress. runner.addPlugin(TestRunProgressPlugin.withVerbosity(2)) % Run tests using customized runner. result = run(runner,[suite]);
参考
runtests
| run (TestCase)
| run (TestSuite)
| run (TestRunner)