Main Content

matlab.unittest.constraints.ObjectComparator クラス

名前空間: matlab.unittest.constraints

MATLAB または Java オブジェクト配列の比較演算子

説明

matlab.unittest.constraints.ObjectComparator クラスは、MATLAB® または Java® オブジェクト配列の比較演算子を提供します。この比較演算子をテストで使用するには、ObjectComparator インスタンスを作成し、それを IsEqualTo 制約コンストラクターの名前と値の引数 Using の値として指定します。

作成

説明

c = matlab.unittest.constraints.ObjectComparator は、MATLAB または Java オブジェクト配列の比較演算子を作成します。この比較演算子は、実際の値と期待される値が同じクラスとサイズをもつオブジェクト配列で、すべてのプロパティの値が等しい場合に満たされます。等価性を判定できない場合、比較演算子で isequaln または isequal が呼び出されます。(期待される値のクラスで isequaln メソッドが定義されている場合、比較演算子で isequaln が呼び出されます。それ以外の場合は isequal が呼び出されます。)この呼び出しで true が返されると、比較演算子が満たされます。

c = matlab.unittest.constraints.ObjectComparator("Within",tol) は、指定された許容誤差を比較で使用します。この構文を使用する場合、比較演算子で上記と同様の等価性のチェックが最初に行われます。そのチェックにパスすると、比較演算子が満たされます。それ以外の場合、比較演算子で実際の値と期待される値のクラス、サイズ、スパース性の等価性がチェックされます。これらのいずれかのチェックに失敗すると、比較演算子は満たされません。それらにパスした場合、比較が比較演算子から tol にデリゲートされます。

入力引数

すべて展開する

許容誤差。matlab.unittest.constraints.Tolerance オブジェクトとして指定します。

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

例: matlab.unittest.constraints.AbsoluteTolerance(MyInt(1))

プロパティ

すべて展開する

許容誤差。matlab.unittest.constraints.Tolerance オブジェクトとして返されます。

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

属性:

GetAccess
public
SetAccess
private

すべて折りたたむ

ObjectComparator クラスを使用して、実際の値と期待される値を比較します。

現在のフォルダー内の MyInt.m という名前のファイルに、int8 クラスのサブクラスを作成します。

classdef MyInt < int8
    methods
        function obj = MyInt(value)
            obj = obj@int8(value);
        end
    end
end

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.ObjectComparator
import matlab.unittest.constraints.AbsoluteTolerance

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

testCase = TestCase.forInteractiveUse;

ObjectComparator インスタンスを使用して、同じ入力値で構成された 2 つの MyInt オブジェクトを比較します。テストはパスします。

testCase.verifyThat(MyInt(10),IsEqualTo(MyInt(10), ...
    "Using",ObjectComparator))
Verification passed.

異なる入力値で構成された 2 つの MyInt オブジェクトを比較します。テストは失敗します。

testCase.verifyThat(MyInt(11),IsEqualTo(MyInt(10), ...
    "Using",ObjectComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> ObjectComparator failed.
        --> The objects are not equal using "isequaln".
        
        Actual Value:
          MyInt:
        
          int8 data:
           11
        Expected Value:
          MyInt:
        
          int8 data:
           10
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingObjectComparatorExample.m (CompareValuesUsingObjectComparatorExample) at 30

テストにパスするように、値が絶対許容誤差 1 の範囲内で等価でなければならないものと指定します。許容誤差の値は、実際の値および期待される値と同じクラスでなければなりません。

testCase.verifyThat(MyInt(11),IsEqualTo(MyInt(10), ...
    "Using", ObjectComparator("Within",AbsoluteTolerance(MyInt(1)))))
Verification passed.

ヒント

  • ほとんどの場合、ObjectComparator インスタンストを使用する必要はありません。MATLAB および Java オブジェクト配列を含むさまざまなデータ型の等価性をテストする制約が IsEqualTo クラスで作成されます。

    ObjectComparator インスタンスは、IsEqualTo クラスで実行される比較をオーバーライドする必要がある場合に使用します。たとえば、実際の値と期待される値が MATLAB オブジェクト配列でない場合に比較を失敗とするには、ObjectComparator インスタンスをテストに含めます。ObjectComparator を使用して、cell 配列、構造体、ディクショナリ、table、および MATLAB オブジェクト配列のパブリック プロパティに格納される値を制限することもできます。次の例では、実際の値と期待される値が数値スカラーであるため、MATLAB からエラーがスローされます。

    import matlab.unittest.TestCase
    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.ObjectComparator
    
    testCase = TestCase.forInteractiveUse;
    exp = 5; 
    act = exp;
    testCase.verifyThat(act,IsEqualTo(exp,"Using",ObjectComparator))
    

バージョン履歴

R2013a で導入