このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
selectIf
クラス: matlab.unittest.TestSuite
名前空間: matlab.unittest
条件を満たすテスト スイート要素を選択する
説明
filteredSuite = selectIf(
は、1 つ以上の名前と値の引数で指定されたオプションを使用してテスト スイートをフィルター処理します。たとえば、suite
,Name,Value
)filteredSuite = selectIf(suite,"Name","featureA_*")
は、名前が "featureA_"
で始まる suite
の要素を選択します。
入力引数
suite
— テスト スイート
matlab.unittest.TestSuite
配列
テスト スイート。matlab.unittest.TestSuite
配列として指定します。
selector
— セレクター
セレクター クラスのインスタンス
セレクター。matlab.unittest.selectors
パッケージのクラスのインスタンスとして指定します。MATLAB® Test™ がインストールされている場合、selector
を matlabtest.selectors.DependsOn
オブジェクトとして指定することもできます。
例: matlab.unittest.selectors.HasTag
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
例: filteredSuite = selectIf(suite,Name="featureA_*")
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: filteredSuite = selectIf(suite,"Name","featureA_*")
BaseFolder
— ベース フォルダー名
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テスト ファイルを含むベース フォルダーの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素が BaseFolder
によって指定されたベース フォルダーの 1 つに含まれていなければなりません。Test
要素がいずれもベース フォルダーと一致しない場合、空のテスト スイートが返されます。ワイルドカード文字 (*
) を使用すると任意の数の文字と一致します。疑問符 (?
) を使用すると単一の文字と一致します。
パッケージで定義したテスト ファイルでは、ベース フォルダーは最上位パッケージ フォルダーの親です。
DependsOn
— ソース コードが含まれるファイルおよびフォルダーの名前
string ベクトル | 文字ベクトル | 文字ベクトルの cell ベクトル
ソース コードが含まれているファイルおよびフォルダーの名前。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"]
Name
— テストの名前
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テストの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素の Name
プロパティが Name
によって指定された名前の 1 つと一致しなければなりません。Test
要素がいずれも一致する名前をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*
) を使用すると任意の数の文字と一致します。疑問符 (?
) を使用すると単一の文字と一致します。
特定のテスト ファイルにおいて、テストの名前はテスト内容のうち実行可能な最小部分を一意に識別します。テストの名前には、パッケージ名、ファイル名 (拡張子は除く)、プロシージャ名、およびパラメーター化に関する情報が含まれます。
ParameterProperty
— パラメーター化プロパティ名
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テストで使用されるパラメーターを定義するテスト クラス プロパティの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素の Parameterization
プロパティに ParameterProperty
で指定されたプロパティ名が少なくとも 1 つ含まれていなければなりません。Test
要素がいずれも一致するプロパティ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*
) を使用すると任意の数の文字と一致します。疑問符 (?
) を使用すると単一の文字と一致します。
ParameterName
— パラメーター名
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テストで使用されるパラメーターの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。MATLAB は、パラメーターを定義するテスト クラス プロパティに基づいてパラメーター名を生成します。
プロパティ値が cell 配列である場合、MATLAB は、cell 配列の要素の値、型、および次元を考慮して、それらの要素からパラメーター名を生成します。
プロパティ値が構造体である場合、MATLAB はパラメーター名を構造体フィールドから生成します。
引数 ParameterName
はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素の Parameterization
プロパティに ParameterName
によって指定されたパラメーター名が少なくとも 1 つ含まれていなければなりません。Test
要素がいずれも一致するパラメーター名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*
) を使用すると任意の数の文字と一致します。疑問符 (?
) を使用すると単一の文字と一致します。
ProcedureName
— テスト プロシージャの名前
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テスト プロシージャの名前。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素の ProcedureName
プロパティが ProcedureName
によって指定されたプロシージャ名の 1 つと一致しなければなりません。Test
要素がいずれも一致するプロシージャ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*
) を使用すると任意の数の文字と一致します。疑問符 (?
) を使用すると単一の文字と一致します。
クラスベースのテストでは、テスト プロシージャの名前はテストを含む Test
メソッドの名前です。関数ベースのテストでは、テストを含むローカル関数の名前です。スクリプトベースのテストでは、テスト セクション タイトルから生成された名前です。テスト スイート要素の名前とは異なり、テスト プロシージャの名前にパッケージ名、ファイル名、パラメーター化に関する情報は含まれません。
Superclass
— テスト クラスの派生元であるクラスの名前
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テスト クラスの派生元であるクラスの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素の TestClass
プロパティが Superclass
によって指定されたクラスの 1 つから派生するテスト クラスを指していなければなりません。Test
要素がいずれもクラスに一致しない場合、空のテスト スイートが返されます。
Tag
— タグの名前
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列
テストで使用されるタグの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。この引数はテスト スイートをフィルター処理します。テスト フレームワークがフィルター処理されたスイートにテストを含めるためには、Test
要素の Tags
プロパティに Tag
によって指定されたタグ名が少なくとも 1 つ含まれていなければなりません。Test
要素がいずれも一致するタグ名をもたない場合、空のテスト スイートが返されます。ワイルドカード文字 (*
) を使用すると任意の数の文字と一致します。疑問符 (?
) を使用すると単一の文字と一致します。
例
テスト スイートのフィルター処理
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
メソッド testClass
と testSize
があります。
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 で導入R2023a: ソース コードの依存関係によるテスト スイートのフィルター処理
MATLAB Test のライセンスがある場合、指定したソース コードへのテスト ファイルの依存関係でテスト スイートをフィルター処理できます。名前と値の引数 DependsOn
または matlabtest.selectors.DependsOn
クラスを使用してソース ファイルおよびフォルダーを指定します。
R2022b: cell 配列からよりわかりやすいパラメーター名を生成
空でない cell 配列をパラメーター化プロパティに代入すると、テスト フレームワークは cell 配列の要素の値、型、および次元を考慮して、それらの要素からパラメーター名を生成します。以前のリリースでは、プロパティ値が文字ベクトルの cell 配列である場合、フレームワークは cell 配列の値からパラメーター名を生成します。それ以外の場合、フレームワークはパラメーター名を value1
、value2
、…、valueN
として指定します。
コードでパラメーター名を使用してテスト スイートを作成したり、フィルター処理したりする場合は、古いパラメーター名をわかりやすいパラメーター名に置き換えてください。たとえば、suite = testsuite(pwd,"ParameterName","value1")
の value1
をわかりやすいパラメーター名に置き換えて更新します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)