Main Content

matlab.unittest.constraints.Constraint クラス

パッケージ: matlab.unittest.constraints

制約の基本的なインターフェイス

説明

matlab.unittest.constraints.Constraint クラスは、検定で比較ロジックをエンコードして診断情報を生成するために使用できるインターフェイスを提供します。すべての制約は、ユーザー指定の制約なのかフレームワーク制約なのかに関係なく、Constraint クラスから派生します。

カスタム制約クラスを作成するには、matlab.unittest.constraints.Constraint からクラスを派生させ、その抽象メソッドを実装します。

  • satisfiedBy メソッドを実装して比較ロジックをエンコードします。

  • getDiagnosticFor メソッドを実装して、テスト フレームワークが制約に照らして実際の値を評価したときに診断情報を生成します。

その後、matlab.unittest.qualifications パッケージの assertThatassumeThatfatalAssertThat、および verifyThat の検定メソッドと共に Constraint サブクラスを使用できます。

and (&)、or (|)、および not (~) の各演算子を使用して組み合わせや打ち消しができる制約を作成するには、代わりに matlab.unittest.constraints.BooleanConstraint からクラスを派生させます。

クラスの属性

抽象型
true
HandleCompatible
true

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

メソッド

すべて展開する

すべて折りたたむ

値と期待される値のサイズが同じかどうかを判定する制約を作成します。

現在のフォルダー内のファイルに、matlab.unittest.constraints.Constraint から派生させた IsSameSizeAs という名前のクラスを作成し、satisfiedBy メソッドおよび getDiagnosticFor メソッドを実装します。

classdef IsSameSizeAs < matlab.unittest.constraints.Constraint
    properties (SetAccess=immutable)
        ValueWithExpectedSize
    end

    methods
        % Class constructor
        function constraint = IsSameSizeAs(value)
            constraint.ValueWithExpectedSize = value;
        end

        % Determine if the actual value satisfies the constraint 
        function tf = satisfiedBy(constraint,actual)
            tf = constraint.sizeMatchesExpected(actual);
        end

        % Produce a diagnostic for the constraint
        function diagnostic = getDiagnosticFor(constraint,actual)
            import matlab.automation.diagnostics.StringDiagnostic
            if constraint.sizeMatchesExpected(actual)
                diagnostic = StringDiagnostic("IsSameSizeAs passed.");
            else
                diagnostic = StringDiagnostic( ...
                    "IsSameSizeAs failed." + newline + "Actual Size: [" ...
                    + int2str(size(actual)) + "]" + newline ...
                    + "Expected Size: [" ...
                    + int2str(size(constraint.ValueWithExpectedSize)) ...
                    + "]");
            end
        end
    end

    methods (Access=private)
        % Determine if the actual and expected values are the same size
        function tf = sizeMatchesExpected(constraint,actual)
            tf = isequal(size(actual), ...
                size(constraint.ValueWithExpectedSize));
        end
    end
end

対話型テスト用にテスト ケースを作成します。

testCase = matlab.unittest.TestCase.forInteractiveUse;

IsSameSizeAs 制約を使用することで、0 から成る 5 行 5 列の行列が 1 から成る 5 行 5 列の行列と同じサイズであることを検証します。

testCase.verifyThat(zeros(5),IsSameSizeAs(ones(5)))
Verification passed.

バージョン履歴

R2013a で導入