Main Content

さまざまなワークフローでのテスト実行

テスト例の設定

テストを実行するためのさまざまな方法を確認するため、クラス ベースのテストおよび関数ベースのテストを現在の作業フォルダーに作成します。クラスベースのテスト ファイルについては、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 オブジェクトを明示的に定義するので、その内容を確認することができます。関数 runtestsTestSuite オブジェクトを返しません。

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]);

参考

| | |

関連するトピック