Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

selectIf

クラス: matlab.unittest.TestSuite
名前空間: matlab.unittest

条件を満たすテスト スイート要素を選択する

説明

filteredSuite = selectIf(suite,selector) は、指定されたテスト スイートから、指定されたセレクターで設定されている条件を満たす要素を選択します。このメソッドは、選択された要素をフィルター処理された TestSuite 配列として返します。

filteredSuite = selectIf(suite,Name,Value) は、1 つ以上の名前と値の引数で指定されたオプションを使用してテスト スイートをフィルター処理します。たとえば、filteredSuite = selectIf(suite,"Name","featureA_*") は、名前が "featureA_" で始まる suite の要素を選択します。

入力引数

すべて展開する

テスト スイート。matlab.unittest.TestSuite 配列として指定します。

セレクター。matlab.unittest.selectors パッケージのクラスのインスタンスとして指定します。MATLAB® Test™ がインストールされている場合、selectormatlabtest.selectors.DependsOn オブジェクトとして指定することもできます。

例: matlab.unittest.selectors.HasTag

名前と値の引数

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

例: filteredSuite = selectIf(suite,Name="featureA_*")

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

例: filteredSuite = selectIf(suite,"Name","featureA_*")

テスト ファイルを含むベース フォルダーの名前。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 要素がいずれも一致するタグ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*) を使用すると任意の数の文字と一致します。疑問符 (?) を使用すると単一の文字と一致します。

属性

Sealedtrue

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

selectIf メソッドを使用してテスト スイートをフィルター処理します。

現在のフォルダー内の FeatureTest.m という名前のファイルで、共有テスト フィクスチャを使用するテストを含む FeatureTest クラスを作成します。テスト コードを簡略化するために、このテスト クラスでは、実装していないテスト用のプレースホルダーとして無条件テスト エラーを使用しています。

classdef (SharedTestFixtures={ ...
        matlab.unittest.fixtures.SuppressedWarningsFixture( ...
        "MATLAB:rmpath:DirNotFound")}) ...
        FeatureTest < matlab.unittest.TestCase
    methods (Test)
        function testA(testCase)
            testCase.verifyFail("Implement the test.")
        end
        function testB(testCase)
            testCase.verifyFail("Implement the test.")
        end
        function testC(testCase)
            testCase.verifyFail("Implement the test.")
        end
    end
end

この例で使用するクラスをインポートします。

import matlab.unittest.selectors.HasName
import matlab.unittest.constraints.ContainsSubstring
import matlab.unittest.constraints.EndsWithSubstring
import matlab.unittest.selectors.HasSharedTestFixture
import matlab.unittest.fixtures.SuppressedWarningsFixture

FeatureTest クラスからテスト スイートを作成し、テスト名を表示します。スイートには 3 つの Test 要素が含まれています。

suite = testsuite("FeatureTest");
disp({suite.Name}')
    {'FeatureTest/testA'}
    {'FeatureTest/testB'}
    {'FeatureTest/testC'}

名前に大文字と小文字を区別しないテキスト "TA" を含むテストを選択して、フィルター処理されたテスト スイートを作成します。

suite1 = selectIf(suite,HasName(ContainsSubstring("TA","IgnoringCase",true)));
disp({suite1.Name}')
    {'FeatureTest/testA'}

名前に "A" または "B" を含むテストを選択して、フィルター処理されたテスト スイートを作成します。

suite2 = selectIf(suite,"Name",["*A*" "*B*"]);
disp({suite2.Name}')
    {'FeatureTest/testA'}
    {'FeatureTest/testB'}

指定した共有テスト フィクスチャを使用するテストで、名前が "C" で終わらないテストのフィルター処理されたスイートを作成します。指定したフィクスチャはすべてのテストで使用されていますが、"testC" は名前の制約を満たさないためスイートから除外されます。

suite3 = suite.selectIf(~HasName(EndsWithSubstring("C")) &  ...
    HasSharedTestFixture(SuppressedWarningsFixture( ...
    "MATLAB:rmpath:DirNotFound")));
disp({suite3.Name}')
    {'FeatureTest/testA'}
    {'FeatureTest/testB'}

パラメーター化に基づいてテストを選択して、フィルター処理されたテスト スイートを作成します。

現在のフォルダー内の ZerosTest.m という名前のファイルに、関数 zeros をテストする ZerosTest クラスを作成します。クラスには 2 つのパラメーター化された Test メソッド testClasstestSize があります。

classdef ZerosTest < matlab.unittest.TestCase
    properties (TestParameter)
        type = {'single','double','uint16'};
        size = struct("s2d",[3 3],"s3d",[2 5 4]);
    end
    
    methods (Test)
        function testClass(testCase,size,type)
            testCase.verifyClass(zeros(size,type),type)
        end
        
        function testSize(testCase,size)
            testCase.verifySize(zeros(size),size)
        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

HasParameter クラスをインポートします。

import matlab.unittest.selectors.HasParameter

ZerosTest クラスからテスト スイートを作成し、テスト名を表示します。スイートには 11 個の Test 要素が含まれています。

suite = testsuite("ZerosTest");
disp({suite.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testClass(size=s3d,type=single)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=uint16)'}
    {'ZerosTest/testSize(size=s2d)'             }
    {'ZerosTest/testSize(size=s3d)'             }
    {'ZerosTest/testDefaultClass'               }
    {'ZerosTest/testDefaultSize'                }
    {'ZerosTest/testDefaultValue'               }

パラメーター化されたテストをすべて選択して、フィルター処理されたテスト スイートを作成します。

suite1 = suite.selectIf(HasParameter);
disp({suite1.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testClass(size=s3d,type=single)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=uint16)'}
    {'ZerosTest/testSize(size=s2d)'             }
    {'ZerosTest/testSize(size=s3d)'             }

パラメーター化されていないテストをすべて選択します。

suite2 = suite.selectIf(~HasParameter);
disp({suite2.Name}')
    {'ZerosTest/testDefaultClass'}
    {'ZerosTest/testDefaultSize' }
    {'ZerosTest/testDefaultValue'}

パラメーター化プロパティが "type" でパラメーター名が "double" であるパラメーター化されたテストをすべて選択します。

suite3 = suite.selectIf(HasParameter("Property","type","Name","double"));
disp({suite3.Name}')
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}

名前が "t" で始まるパラメーター化プロパティをもつパラメーター化されたテストをすべて選択します。

suite4 = suite.selectIf("ParameterProperty","t*");
disp({suite4.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testClass(size=s3d,type=single)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=uint16)'}

テスト タグに基づいてテストを選択して、フィルター処理されたテスト スイートを作成します。

現在のフォルダー内の ExampleTest.m という名前のファイルで、メソッドレベルの TestTags 属性を使用して個々のテストにタグを付ける ExampleTest クラスを作成します。テスト コードを簡略化するために、この例の Test メソッドでは、実装していないテスト用のプレースホルダーとして無条件テスト エラーを使用しています。

classdef ExampleTest < matlab.unittest.TestCase
    methods (Test)
        function testA(testCase)
            testCase.verifyFail("Implement the test.")
        end
    end
    methods (Test,TestTags="Unit")
        function testB (testCase)
            testCase.verifyFail("Implement the test.")
        end
        function testC(testCase)
            testCase.verifyFail("Implement the test.")
        end
    end
    methods (Test,TestTags=["Unit" "FeatureA"])
        function testD(testCase)
            testCase.verifyFail("Implement the test.")
        end
    end
    methods (Test,TestTags=["System" "FeatureA"])
        function testE(testCase)
            testCase.verifyFail("Implement the test.")
        end
    end
end

HasTag クラスをインポートします。

import matlab.unittest.selectors.HasTag

ExampleTest クラスからテスト スイートを作成し、テスト名を表示します。スイートには 5 つの Test 要素が含まれています。

suite = testsuite("ExampleTest");
disp({suite.Name}')
    {'ExampleTest/testE'}
    {'ExampleTest/testD'}
    {'ExampleTest/testB'}
    {'ExampleTest/testC'}
    {'ExampleTest/testA'}

"Unit" というタグが付いたテストをすべて選択します。

suite1 = suite.selectIf("Tag","Unit");
disp({suite1.Name}')
    {'ExampleTest/testD'}
    {'ExampleTest/testB'}
    {'ExampleTest/testC'}

"FeatureA" というタグが付いていないテストをすべて選択します。

suite2 =  suite.selectIf(~HasTag("FeatureA"));
disp({suite2.Name}')
    {'ExampleTest/testB'}
    {'ExampleTest/testC'}
    {'ExampleTest/testA'}

いずれのタグも付いていないテストをすべて選択します。

suite3 =  suite.selectIf(~HasTag);
disp({suite3.Name}')
    {'ExampleTest/testA'}

バージョン履歴

R2014a で導入

すべて展開する