Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

runtests

一連のテストの実行

説明

results = runtests は、現在のフォルダーのすべてのテストを実行し、結果を TestResult 配列として返します。

results = runtests(tests) は、指定された一連のテストを実行します。

results = runtests(___,Name,Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用して一連のテストを実行します。

すべて折りたたむ

現在の作業フォルダーに myExample というフォルダーを作成し、そのフォルダーに切り替えます。

myExample フォルダーに typeTest.m というテスト スクリプトを作成します。

%% Test double class
exp = 'double';
act = ones;
assert(isa(act,exp))

%% Test single class
exp = 'single';
act = ones('single');
assert(isa(act,exp))

%% Test uint16 class
exp = 'uint16';
act = ones('uint16');
assert(isa(act,exp))

myExample フォルダーに sizeValueTest.m というテスト スクリプトを作成します。

%% Test size
exp = [7 13];
act = ones([7 13]);
assert(isequal(size(act),exp))

%% Test values
act = ones(42);
assert(unique(act) == 1)

現在のフォルダー内のすべてのテストを実行します。

runtests
Running sizeValueTest
..
Done sizeValueTest
__________

Running typeTest
...
Done typeTest
__________


ans = 

  1x5 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   5 Passed, 0 Failed, 0 Incomplete.
   0.038077 seconds testing time.

MATLAB® で実行されたテストは 5 つです。sizeValueTest の 2 つのテストと typeTest の 3 つのテストにパスしています。

以下に示すテスト ファイルを作成し、MATLAB パス上に runtestsExampleTest.m として保存します。

function tests = runtestsExampleTest
tests = functiontests(localfunctions);

function testFunctionOne(testCase)

テストを実行します。

results = runtests('runtestsExampleTest.m');
Running runtestsExampleTest
.
Done runtestsExampleTest
__________

前の例のテスト ファイル runtestsExampleTest.m が存在しない場合は作成します。

サブフォルダー tmpTest を作成して、そのフォルダーに次の runtestsExampleSubFolderTest.m ファイルを作成します。

function tests = runtestsExampleSubFolderTest
tests = functiontests(localfunctions);

function testFunctionTwo(testCase)

'IncludeSubfolders' を true に設定して、tmpTest の上のフォルダーからテストを実行します。

results = runtests(pwd,'IncludeSubfolders',true);
Running runtestsExampleTest
.
Done runtestsExampleTest
__________

Running runtestsExampleSubFolderTest
.
Done runtestsExampleSubFolderTest
__________

runtests で現在のフォルダーとサブフォルダー内のテストが実行されました。

関数 runtests'IncludeSubfolders' プロパティを指定しない場合、サブフォルダー内のテストは実行されません。

results = runtests(pwd);
Running runtestsExampleTest
.
Done runtestsExampleTest
__________

現在のフォルダーがプロジェクトのルート フォルダーであるか、プロジェクトのルート フォルダーへのパスを関数 runtests に渡した場合、runtests は、Test の分類ラベルが付けられた、指定されたプロジェクトに含まれるすべてのテスト ファイルを実行します。

この例では、C:\projects\project1 のプロジェクト フォルダーに Test の分類ラベルが付けられたテスト ファイルが含まれていると仮定します。現在のフォルダーをプロジェクトのルート フォルダーに変更し、プロジェクト内のテストを実行します。

cd 'C:\projects\project1'
runtests

あるいは、project1 を開いてテストを実行することもできます。終了したらプロジェクトを閉じます。

proj = openProject('C:\projects\project1');
runtests
close(proj)

さらに別の方法として、プロジェクトのルート フォルダーへの絶対パスを runtests に渡してプロジェクト内のテストを実行することもできます。

runtests('C:\projects\project1')

以下に示すテスト ファイルを作成し、MATLAB® パス上に runInParallelTest.m として保存します。

function tests = runInParallelTest
tests = functiontests(localfunctions);

function testA(testCase)
verifyEqual(testCase,5,5);

function testB(testCase)
verifyTrue(testCase,logical(1));

function testC(testCase)
verifySubstring(testCase,'SomeLongText','Long');

function testD(testCase)
verifySize(testCase,ones(2,5,3),[2 5 3]);

function testE(testCase)
verifyGreaterThan(testCase,3,2);

function testF(testCase)
verifyEmpty(testCase,{},'Cell array is not empty.');

function testG(testCase)
verifyMatches(testCase,'Some Text','Some [Tt]ext');

テストを並列実行します。テストを並列実行するには Parallel Computing Toolbox™ が必要です。テスト フレームワークによって、グループの順序と数、あるいは各グループに含めるテストが異なる場合があります。

results = runtests('runInParallelTest','UseParallel',true);
Split tests into 7 groups and running them on 4 workers.
----------------
Finished Group 2
----------------
Running runInParallelTest
.
Done runInParallelTest
__________


----------------
Finished Group 3
----------------
Running runInParallelTest
.
Done runInParallelTest
__________


----------------
Finished Group 1
----------------
Running runInParallelTest
.
Done runInParallelTest
__________


----------------
Finished Group 4
----------------
Running runInParallelTest
.
Done runInParallelTest
__________


----------------
Finished Group 6
----------------
Running runInParallelTest
.
Done runInParallelTest
__________


----------------
Finished Group 5
----------------
Running runInParallelTest
.
Done runInParallelTest
__________


----------------
Finished Group 7
----------------
Running runInParallelTest
.
Done runInParallelTest
__________

作業フォルダーで testZeros.m を作成します。このクラスには 4 つのテスト メソッドが含まれます。

classdef testZeros < matlab.unittest.TestCase
    properties (TestParameter)
        type = {'single','double','uint16'};
        outSize = struct('s2d',[3 3], 's3d',[2 5 4]);
    end
    
    methods (Test)
        function testClass(testCase, type, outSize)
            testCase.verifyClass(zeros(outSize,type), type);
        end
        
        function testSize(testCase, outSize)
            testCase.verifySize(zeros(outSize), outSize);
        end
        
        function testDefaultClass(testCase)
            testCase.verifyClass(zeros, 'double');
        end
        function testDefaultSize(testCase)
            testCase.verifySize(zeros, [1 1]);
        end
        
        function testDefaultValue(testCase)
            testCase.verifyEqual(zeros,0);
        end
    end
end

テスト スイート全体では 11 のテスト要素があります。testClass メソッドから 6 要素、testSize メソッドから 2 要素、testDefaultClasstestDefaultSizetestDefaultValue メソッドから各 1 要素です。

コマンド プロンプトで、testSize メソッドのすべてのパラメーター化を実行します。

runtests('testZeros/testSize')
Running testZeros
..
Done testZeros
__________


ans = 

  1x2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.038352 seconds testing time.

関数 runtests によって、testSize メソッドからパラメーター化された 2 つのテストが実行されました。あるいは、runtests('testZeros','ProcedureName','testSize') を使用してテスト プロシージャ名を指定することもできます。

outSize パラメーター プロパティを使用するテスト要素を実行します。

runtests('testZeros','ParameterProperty','outSize')
Running testZeros
........
Done testZeros
__________


ans = 

  1x8 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   8 Passed, 0 Failed, 0 Incomplete.
   0.035729 seconds testing time.

関数 runtestsoutSize パラメーター プロパティを使用する 8 つのテストを実行しました。testClass メソッドから 6 要素と testSize メソッドから 2 要素です。

single パラメーター名を使用するテスト要素を実行します。

runtests('testZeros','ParameterName','single')
Running testZeros
..
Done testZeros
__________


ans = 

  1x2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.007487 seconds testing time.

関数 runtestsoutSize パラメーター名を使用する testClass メソッドから 2 つのテストを実行しました。

入力引数

すべて折りたたむ

テスト。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数を使用してテスト内容を指定します。たとえば、テスト ファイル、テスト クラス、テスト ファイルを含むフォルダー、テスト クラスを含むパッケージ、テスト ファイルを含むプロジェクト フォルダーを指定できます。

例: runtests("myTestFile.m")

例: runtests(["myTestFile/test1" "myTestFile/test3"])

例: runtests("mypackage.MyTestClass")

例: runtests(pwd)

例: runtests({'mypackage.MyTestClass','myTestFile.m',pwd,'mypackage.subpackage'})

例: runtests("C:\projects\project1")

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

例: runtests(tests,Name="productA_*") は、"productA_" で始まる名前のテスト要素を実行します。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: runtests(tests,"Name","productA_*") は、"productA_" で始まる名前のテスト要素を実行します。

テストの識別

すべて折りたたむ

サブフォルダー内のテストを実行するかどうかを示すインジケーター。false または true (0 または 1) として指定します。既定では、フレームワークは指定されたフォルダー内のテストを実行しますが、そのサブフォルダー内のテストは実行しません。

サブパッケージ内のテストを実行するかどうかを示すインジケーター。false または true (0 または 1) として指定します。既定では、フレームワークは指定されたパッケージ内のテストを実行しますが、そのサブパッケージ内のテストは実行しません。

参照プロジェクトのテストを含めるかどうかのインジケーター。false または true として指定します。参照プロジェクトの詳細については、大規模なプロジェクトのコンポーネント化を参照してください。

関数で処理するフォルダーまたはパッケージ内の無効なテスト ファイルに対して実行するアクション。"warn" または "error" として指定します。

  • "warn" — 関数はフォルダーまたはパッケージ内の無効なテスト ファイルのそれぞれについて警告を発行し、有効なファイルのテストを実行します。

  • "error" — 関数はフォルダーまたはパッケージ内で無効なテスト ファイルを見つけるとエラーをスローします。

無効なテスト ファイルは、フレームワークで実行できないテスト ファイルです。たとえば、構文エラーを含むテスト ファイル、ローカル関数が欠落した関数ベースのテスト ファイル、未定義のパラメーター化プロパティが渡された Test メソッドを含むファイルなどが含まれます。

テストのフィルター処理

すべて折りたたむ

テスト ファイルを含むベース フォルダーの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素が BaseFolder によって指定されたベース フォルダーの 1 つに含まれていなければなりません。Test 要素がいずれもベース フォルダーと一致しない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

パッケージで定義したテスト ファイルでは、ベース フォルダーは最上位パッケージ フォルダーの親です。

ソース コードが含まれているファイルおよびフォルダーの名前。string ベクトル、文字ベクトル、または文字ベクトルの cell ベクトルとして指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理したスイートにテストを含めるには、テストを定義しているファイルが、指定したソース コードに依存している必要があります。テスト ファイルのいずれもソース コードに依存していない場合は、空のテスト スイートが返されます。

指定する値は、拡張子が .m.p.mlx.mlapp.mat、または .slx である 1 つ以上の既存のファイルを表している必要があります。サポートされていない拡張子をもつファイル名を明示的に指定することはできません。フォルダー名を指定した場合、フレームワークは、そのフォルダー内のサポートされるファイルのパスを抽出します。

DependsOn を使用するには、MATLAB Test™ がインストールされていなければなりません。ソース コードの依存関係によるテストの選択の詳細については、matlabtest.selectors.DependsOn (MATLAB Test) を参照してください。

例: DependsOn=["myFile.m" "myFolder"]

例: DependsOn=["folderA" "C:\work\folderB"]

テストの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素の Name プロパティが Name によって指定された名前の 1 つと一致しなければなりません。Test 要素がいずれも一致する名前をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

特定のテスト ファイルにおいて、テストの名前はテスト内容のうち実行可能な最小部分を一意に識別します。テストの名前には、パッケージ名、ファイル名 (拡張子は除く)、プロシージャ名、およびパラメーター化に関する情報が含まれます。

テストで使用されるパラメーターを定義するテスト クラス プロパティの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素の Parameterization プロパティに ParameterProperty で指定されたプロパティ名が少なくとも 1 つ含まれていなければなりません。Test 要素がいずれも一致するプロパティ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

テストで使用されるパラメーターの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。MATLAB は、パラメーターを定義するテスト クラス プロパティに基づいてパラメーター名を生成します。

  • プロパティ値が cell 配列である場合、MATLAB は、cell 配列の要素の値、型、および次元を考慮して、それらの要素からパラメーター名を生成します。

  • プロパティ値が構造体である場合、MATLAB はパラメーター名を構造体フィールドから生成します。

引数 ParameterName はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素の Parameterization プロパティに ParameterName によって指定されたパラメーター名が少なくとも 1 つ含まれていなければなりません。Test 要素がいずれも一致するパラメーター名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

テスト プロシージャの名前。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素の ProcedureName プロパティが ProcedureName によって指定されたプロシージャ名の 1 つと一致しなければなりません。Test 要素がいずれも一致するプロシージャ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

クラスベースのテストでは、テスト プロシージャの名前はテストを含む Test メソッドの名前です。関数ベースのテストでは、テストを含むローカル関数の名前です。スクリプトベースのテストでは、テスト セクション タイトルから生成された名前です。テスト スイート要素の名前とは異なり、テスト プロシージャの名前にパッケージ名、ファイル名、パラメーター化に関する情報は含まれません。

テスト クラスの派生元であるクラスの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素の TestClass プロパティが Superclass によって指定されたクラスの 1 つから派生するテスト クラスを指していなければなりません。Test 要素がいずれもクラスに一致しない場合、空のテスト スイートが返されます。

テストで使用されるタグの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test 要素の Tags プロパティに Tag によって指定されたタグ名が少なくとも 1 つ含まれていなければなりません。Test 要素がいずれも一致するタグ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

テスト実行のカスタマイズ

すべて折りたたむ

テストの実行時に厳密なチェックを適用するかどうかを示すインジケーター。false または true (0 または 1) として指定します。たとえば、テストで警告が発行されると、フレームワークで検定エラーが生成されます。

テストを並列実行するかどうかを示すインジケーター。false または true (0 または 1) として指定します。

既定では runtests がテストを逐次実行します。UseParalleltrue に設定すると、runtests はテスト スイートをグループに分け、次の条件が満たされる場合に各グループを並列実行します。

  • Parallel Computing Toolbox がインストールされている。

  • 開いている並列プールが存在するか、[並列基本設定] でプールの自動作成が有効にされている。

そうでない場合、runtestsUseParallel の設定値に関係なくテストを逐次的に実行します。

テストの並列実行は他のオプションと互換性がない場合があります。たとえば、UseParallelDebug の両方が true に設定された場合、テストは逐次発生します。並列実行の場合、テスト フレームワークによって、グループの順序と数、あるいは各グループに含めるテストが異なる場合があります。

テストの実行時にデバッグ機能を適用するかどうかを示すインジケーター。false または true (0 または 1) として指定します。たとえば、テストの失敗が検出された場合、フレームワークはテストの実行を中止し、デバッグ モードになります。

イベント詳細の表示レベル。0 ~ 4 の整数値、または matlab.automation.Verbosity 列挙オブジェクトとして指定します。整数値は matlab.automation.Verbosity 列挙のメンバーに対応します。

関数 runtests は、失敗し、ログが作成されているイベントを OutputDetail で指定された詳細情報とともに表示します。既定では、runtests は失敗したイベントとログが作成されたイベントを matlab.automation.Verbosity.Detailed レベル (レベル 3) で表示し、テスト実行の進行状況を matlab.automation.Verbosity.Concise レベル (レベル 2) で表示します。

数値表現列挙型メンバー名詳細レベルの説明
0None

情報なし

1Terse

最小限の情報

2Concise

中程度の情報量

3Detailed

ある程度の補足的な情報

4Verbose

多くの補足的な情報

テスト実行用に含まれる診断ログの最大詳細レベル。0 ~ 4 の整数値、または matlab.automation.Verbosity 列挙オブジェクトとして指定します。関数 runtests は、このレベル以下でログが作成された診断情報を含めます。整数値は matlab.automation.Verbosity 列挙のメンバーに対応します。

既定では、runtestsmatlab.automation.Verbosity.Terse レベル (レベル 1) でログが作成された診断情報を含めます。診断ログを除外するには、LoggingLevelVerbosity.None (レベル 0) に指定します。

診断ログとは、log (TestCase) メソッドまたは log (Fixture) メソッドの呼び出しによってテスト フレームワークに送る診断です。

数値表現列挙型メンバー名詳細レベルの説明
0None

情報なし

1Terse

最小限の情報

2Concise

中程度の情報量

3Detailed

ある程度の補足的な情報

4Verbose

多くの補足的な情報

アーティファクトの生成

すべて折りたたむ

コード カバレッジ レポートに含めるソース コードへのパス。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。このオプションを使用した場合、runtests は指定されたテストを実行し、指定されたコード ファイルについてコード カバレッジ レポートを生成します。このレポートでは、テストによって実行されたソース コードの部分が示されます。

ソース コードへのパスは、1 つ以上のフォルダーまたはファイル (拡張子が .m.mlx または .mlapp) への絶対または相対パスとすることができます。

例: runtests(tests,'ReportCoverageFor','mySource.m')

データ型: char | string | cell

特定の検定メソッドによるテストで使用される MAT ファイルを作成または更新するかどうかを示すインジケーター。false または true (0 または 1) として指定します。GenerateBaselines を使用するには、Simulink® Test がインストールされていなければなりません。

この引数を true と指定すると、テストでは sltest.TestCase (Simulink Test) クラスのこれらの検定メソッドの 1 つを使用しなければなりません。

  • verifySignalsMatch (たとえば、testCase.verifySignalsMatch(actVal,'myBaseline.mat'))

  • assumeSignalsMatch

  • assertSignalsMatch

  • fatalAssertSignalsMatch

詳細については、Using MATLAB-Based Simulink Tests in the Test Manager (Simulink Test)を参照してください。

ヒント

  • 共有テスト フィクスチャをテストで使用し、関数 runtests への入力を string 配列または文字ベクトルの cell 配列で指定する場合、テスト フレームワークは、共有フィクスチャのセットアップと破棄の操作を減らすために配列を並べ替えます。結果として、テストは入力配列内の要素の順序とは異なる順序で実行される可能性があります。詳細については、sortByFixtures を参照してください。

  • リモート並列プール (MATLAB Parallel Server™ および Parallel Computing Toolbox が必要) でテストを実行すると、MATLAB はまずテストが含まれているローカル フォルダーをリモート ワーカーにコピーします。このステップに伴うオーバーヘッドを最小化するために、必ず、これらのフォルダーにはテストに関連したファイルのみが含まれているようにしてください。

拡張機能

バージョン履歴

R2013b で導入

すべて展開する