メインコンテンツ

matlab.unittest.selectors.HasProcedureName クラス

名前空間: matlab.unittest.selectors
スーパークラス: matlab.unittest.selectors.Selector

プロシージャ名に基づいて TestSuite 配列要素を選択

説明

matlab.unittest.selectors.HasProcedureName クラスは、テスト プロシージャの名前に基づいてテスト スイートにフィルターを適用するセレクターを提供します。

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

クラスの属性

Sealed
true

クラス属性の詳細については、クラスの属性を参照してください。

作成

説明

selector = matlab.unittest.selectors.HasProcedureName(name) は、指定されたテスト プロシージャ名をもつ TestSuite 配列要素を選択するセレクターを作成します。

入力引数

すべて展開する

テスト プロシージャの名前。string スカラー、文字ベクトル、または matlab.unittest.constraints.Constraint オブジェクトとして指定します。プロシージャ名によるテストの選択は、次のように name の指定方法によって異なります。

  • string スカラーまたは文字ベクトルを指定した場合、テスト プロシージャの名前が指定された値と同じでなければなりません。

  • 制約を指定した場合、テスト プロシージャの名前がその制約を満たさなければなりません。

この引数は Constraint プロパティを設定します。

プロパティ

すべて展開する

フィルターが適用されたテスト スイートにテストを含めるためにテスト プロシージャ名が満たさなければならない条件。matlab.unittest.constraints.Constraint オブジェクトとして返されます。

このプロパティは入力引数 name によって設定されます。

  • string スカラーまたは文字ベクトルを指定した場合、テスト フレームワークは、このプロパティを指定されたテスト プロシージャ名を期待値とする IsEqualTo 制約に設定します。

  • 制約を指定した場合、テスト フレームワークは、このプロパティをその制約に設定します。

属性:

GetAccess
public
SetAccess
immutable

すべて折りたたむ

HasProcedureName クラスを使用してテストを選択して、フィルターが適用されたテスト スイートを作成します。

現在のフォルダー内の ZerosTest.m という名前のファイルに、関数 zeros をテストする ZerosTest クラスを作成します。

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

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

import matlab.unittest.TestSuite
import matlab.unittest.selectors.HasProcedureName
import matlab.unittest.constraints.ContainsSubstring

ZerosTest クラスからテスト スイートを作成します。その後、TestSuite 配列要素の名前を表示します。各名前にはテスト プロシージャ名が含まれます。

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'               }

プロシージャ名が testClass のすべてのテストを選択します。

suite1 = suite.selectIf(HasProcedureName("testClass"));
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)'}

プロシージャ名に "Size" または "Value" を含むテストをすべて選択します。

suite2 = suite.selectIf(HasProcedureName(ContainsSubstring("Size")) | ...
    HasProcedureName(ContainsSubstring("Value")));
disp({suite2.Name}')
    {'ZerosTest/testSize(size=s2d)'}
    {'ZerosTest/testSize(size=s3d)'}
    {'ZerosTest/testDefaultSize'   }
    {'ZerosTest/testDefaultValue'  }

部分文字列 "Class" をプロシージャ名に含むテストのみを含めて、フィルターが適用されたテスト スイートを ZerosTest クラスから直接作成します。

suite3 = TestSuite.fromClass(?ZerosTest, ...
    HasProcedureName(ContainsSubstring("Class")));
disp({suite3.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/testDefaultClass'               }

代替機能

テスト プロシージャ名に基づいてテスト スイートにフィルターを適用する場合に柔軟性を最大化するために、HasProcedureName クラスを使用します。あるいは、名前と値の引数 ProcedureName を使用してフィルターが適用されたテスト スイートを作成できます。以下に例を示します。

filteredSuite = matlab.unittest.TestSuite.fromClass(?ZerosTest, ...
    "ProcedureName","testClass");

runtests 関数または runperf 関数の名前と値の引数 ProcedureName を使用してテストを選択して実行することもできます。以下に例を示します。

results = runtests("ZerosTest.m","ProcedureName","testClass");

バージョン履歴

R2017a で導入