Main Content

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

testsuite

テスト スイートを作成

説明

suite = testsuite は、現在のフォルダーからテスト スイートを作成し、そのスイートを配列 Test として返します。

testsuite で作成したテスト スイートを実行するには、matlab.unittest.TestSuitematlab.unittest.TestRunner または matlab.perftest.TimeExperimentrun メソッドを使用します。

suite = testsuite(tests) は、指定された一連のテストからスイートを作成します。

suite = testsuite(tests,Name,Value) は、1 つ以上の Name,Value の引数のペアで指定された追加オプションを使用して、テスト スイートを作成します。

すべて折りたたむ

現在の作業フォルダーにフォルダー myExample を作成し、それを現在の作業フォルダーに指定して、テストをいくつか作成します。

myExample フォルダーに、スクリプトベースのテスト onesTest.m を作成します。

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

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

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

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

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

myExample フォルダーに、関数ベースのテスト eyeTest.m を作成します。

function tests = eyeTest
tests = functiontests(localfunctions);

function doubleClassTest(testCase)
actValue = eye;
verifyClass(testCase,actValue,'double')

function singleClassTest(testCase)
actValue = eye('single');
verifyClass(testCase,actValue,'single')

function uint16ClassTest(testCase)
actValue = eye('uint16');
verifyClass(testCase,actValue,'uint16')

function sizeTest(testCase)
expSize = [7 13];
actValue = eye(expSize);
verifySize(testCase,actValue,expSize);

function valueTest(testCase)
actValue = eye(42);
verifyEqual(testCase,unique(diag(actValue)),1)    % diagonal are 1s
verifyEqual(testCase,unique(triu(actValue,1)),0)  % upper tri vals are 0
verifyEqual(testCase,unique(tril(actValue,-1)),0) % lower tri vals are 0

現在のフォルダーのすべてのテストからテスト スイートを作成します。

suite = testsuite
suite = 

  1×10 Test array with properties:

    Name
    BaseFolder
    ProcedureName
    SharedTestFixtures
    Parameterization
    Tags

Tests Include:
   0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

フォルダーにあるテストが onesTesteyesTest のみの場合、MATLAB® によって 10 個のテストからなるスイートが 1 つ作成されます。

suite 内のテストの名前を表示します。

{suite.Name}'
ans = 

    'eyeTest/doubleClassTest'
    'eyeTest/singleClassTest'
    'eyeTest/uint16ClassTest'
    'eyeTest/sizeTest'
    'eyeTest/valueTest'
    'onesTest/TestDoubleClass'
    'onesTest/TestSingleClass'
    'onesTest/TestUint16Class'
    'onesTest/TestSize'
    'onesTest/TestValues'

eyeTest のすべてのテストからテスト スイートを作成します。

suite2 = testsuite('eyeTest')
suite2 = 

  1×5 Test array with properties:

    Name
    BaseFolder
    ProcedureName
    SharedTestFixtures
    Parameterization
    Tags

Tests Include:
   0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

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

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 要素です。

テスト名に 'Default' を含むテスト要素からテスト スイートを作成します。

suite = testsuite('testZeros','Name','*Default*')
suite = 

  1x3 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

outSize パラメーター プロパティを使用するテスト要素からテスト スイートを作成します。

suite = testsuite('testZeros','ParameterProperty','outSize')
suite = 

  1x8 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   5 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

テスト スイートには outSize パラメーター プロパティを使用する 8 つのテストが含まれています。testClass メソッドから 6 つ、testSize メソッドから 2 つです。

入力引数

すべて折りたたむ

テスト スイート。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。cell 配列の各文字ベクトルには、テスト ファイル、テスト クラス、テスト スイート要素、テスト クラスを含むパッケージ、テスト ファイルを含むフォルダー、あるいはテスト ファイルを含むプロジェクト フォルダーのそれぞれの名前を含めることができます。

例: testsuite('myTestFile.m')

例: testsuite('myTestFile/aTest')

例: testsuite('mypackage.MyTestClass')

例: testsuite(pwd)

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

例: testsuite('C:/projects/project1/')

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: suite = testsuite(tests,'Name','productA_*') は、名前が 'productA_' で始まる tests からテスト スイートを作成します。

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

スイートにサブフォルダーのテストを含めるかどうかのインジケーター。false または true (0 または 1) として指定します。既定では、フレームワークは指定されたフォルダーのテストからスイートを作成し、サブフォルダーは使用しません。

データ型: logical

スイートにサブパッケージのテストを含めるかどうかのインジケーター。false または true (0 または 1) として指定します。既定では、フレームワークは指定されたパッケージのテストからスイートを作成し、サブパッケージは使用しません。

データ型: logical

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

データ型: logical

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

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

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

  • プロパティ値が文字ベクトルの cell 配列である場合、MATLAB は、cell 配列の値からパラメーター名を生成します。それ以外の場合、MATLAB はパラメーター名を value1value2、…、valueN として指定します。

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

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

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

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

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

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

詳細

すべて折りたたむ

MLDATX ファイルからのテスト スイートの作成

関数 testsuite を使用して、MLDATX ファイルからテスト スイートを作成できます (Simulink® Test™ が必要です)。たとえば、suite = testsuite('myTestFile.mldatx') は、ファイル myTestFile.mldatx で指定されたテストからスイートを作成します。

MLDATX ファイルを指定すると、testsuite は、ファイル内のすべてのテストを含むスイートを作成します。MLDATX ファイル内の特定のファイルからスイートを作成するように testsuite に指示することはできません。

ヒント

  • テスト スイートを明示的に作成する必要がない場合は、テストの実行前に runtests または runperf を使用して暗黙的にスイートを作成します。

  • テスト スイートを明示的に作成する代替方法として、matlab.unittest.TestSuite メソッドを使用する方法があります。

  • 関数 testsuite への入力を string 配列または文字ベクトルの cell 配列として指定する場合 (たとえば、suite = testsuite(["Test1","Test2"]))、テスト フレームワークは、共有テスト フィクスチャのセットアップと破棄の操作を減らすために配列を並べ替えます。結果として、テストは入力配列内の要素の順序とは異なる順序で実行される可能性があります。

    テスト実行の順序を強制的に適用するには、testsuite を複数回呼び出してスイートを作成します。たとえば、Test1 で指定されるテストが Test2 で指定されるテストの前に実行されるようにするには、次の構文を使用します。

    suite = [testsuite("Test1") testsuite("Test2")]
    

R2016a で導入