Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

assumeEqual

クラス: matlab.unittest.qualifications.Assumable
パッケージ: matlab.unittest.qualifications

値が指定値と等しいと仮定する

構文

assumeEqual(assumable,actual,expected)
assumeEqual(___,Name,Value)
assumeEqual(___,diagnostic)

説明

assumeEqual(assumable,actual,expected) は、actualexpected と厳密に等しいと仮定します。expected が MATLAB® オブジェクトまたは Java® オブジェクトでない場合、actualexpected のクラス、サイズ、仮定が満たす値は同じでなければなりません。assumeEqual は、IsEqualTo 制約と同じ方法で actualexpected を比較します。

assumeEqual(___,Name,Value) は、1 つ以上の Name,Value ペアの引数によって指定された追加のオプションを使用して等価性を仮定します。

assumeEqual(___,diagnostic) は、さらに diagnostic の診断情報を検定に関連付けます。テスト フレームワークでは、テスト ランナーの構成に応じて検定にパスしたときか失敗したときに診断を表示する場合があります。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin インスタンスを使用します

入力引数

assumable

この matlab.unittest.TestCase インスタンスは、テストを実行しているフレームワークとの組み合わせで仮定が成功か失敗かを判定するために使用します。

actual

テストする値。

expected

期待された値。

diagnostic

検定に関連する診断情報。次のいずれかとして指定します。

  • string 配列

  • 文字配列

  • 関数ハンドル

  • matlab.unittest.diagnostics.Diagnostic オブジェクト

診断値は、非スカラー値になることがあります。詳細については、matlab.unittest.diagnostics.Diagnostic を参照してください。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

AbsTol

絶対許容誤差。数値配列として指定します。許容誤差は同じデータ型の値にのみ適用されます。実際の値および期待された値と同じサイズのスカラーまたは配列を指定できます。

絶対許容誤差を満たすには、abs(expected-actual) <= absTol が成り立たなければなりません。

RelTol

相対許容誤差。数値配列として指定します。許容誤差は同じデータ型の値にのみ適用されます。実際の値および期待された値と同じサイズのスカラーまたは配列を指定できます。

相対許容誤差を満たすには、abs(expected-actual) <= relTol.*abs(expected) が成り立たなければなりません。

すべて展開する

数値はクラスが同じで、サイズ、複雑度、スパース性が同じ場合、等価です。

コマンド プロンプトで、対話型テスト用にテスト ケースを作成します。

testCase = matlab.unittest.TestCase.forInteractiveUse;

数値がそれ自体と等しいと仮定します。

assumeEqual(testCase,5,5)
An assumption was met.

実際の値と期待された値のサイズが等しいと仮定します。

assumeEqual(testCase,[5 5],5)
An assumption was not met.
    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeEqual failed.
    --> Sizes do not match.
        
        Actual size:
             1     2
        Expected size:
             1     1
    
    Actual Value:
         5     5
    Expected Value:
         5
Assumption failed.

int8int16 と等しいと仮定します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
assumeEqual(testCase,int8(5),int16(5))
An assumption was not met.
    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeEqual failed.
    --> Classes do not match.
        
        Actual Class:
            int8
        Expected Class:
            int16
    
    Actual Value:
      int8
    
       5
    Expected Value:
      int16
    
       5
Assumption failed.

等価の cell 配列の要素は、クラス、サイズおよび値が一致しなければなりません。

cell 配列がそれ自体と等しいと仮定します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
assumeEqual(testCase,{'cell',struct,5},{'cell',struct,5})
An assumption was met.

4.955 と等しいと仮定します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
assumeEqual(testCase,4.95,5)
An assumption was not met.
    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> Failure table:
            Actual    Expected           Error              RelativeError    
            ______    ________    ___________________    ____________________
        
             4.95        5        -0.0499999999999998    -0.00999999999999996
    
    Actual Value:
       4.950000000000000
    Expected Value:
         5
Assumption failed.

実際の値 1.5 と期待された値 2 の差が 1 以内であると仮定します。

assumeEqual(testCase,1.5,2,'AbsTol',1)
An assumption was met.

実際の値と期待された値の差が 10% 未満であると仮定します。失敗時に診断情報を表示します。

assumeEqual(testCase,1.5,2,'RelTol',0.1,...
    'Difference between actual and expected exceeds relative tolerance')
An assumption was not met.
    ----------------
    Test Diagnostic:
    ----------------
    Difference between actual and expected exceeds relative tolerance
    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> The error was not within relative tolerance.
    --> Failure table:
            Actual    Expected    Error    RelativeError    RelativeTolerance
            ______    ________    _____    _____________    _________________
        
             1.5         2        -0.5         -0.25               0.1       
    
    Actual Value:
       1.500000000000000
    Expected Value:
         2
Assumption failed.

ヒント

  • このメソッドは、以下のいずれかと機能的に同等です。

    import matlab.unittest.constraints.IsEqualTo;
    assumable.assumeThat(actual, IsEqualTo(expected));
    import matlab.unittest.constraints.IsEqualTo;
    import matlab.unittest.constraints.AbsoluteTolerance;
    assumable.assumeThat(actual, IsEqualTo(expected, ...
        'Within', AbsoluteTolerance(abstol)));
    import matlab.unittest.constraints.IsEqualTo;
    import matlab.unittest.constraints.RelativeTolerance;
    assumable.assumeThat(actual, IsEqualTo(expected, ...
        'Within', RelativeTolerance(reltol)));
    import matlab.unittest.constraints.IsEqualTo;
    import matlab.unittest.constraints.AbsoluteTolerance;
    import matlab.unittest.constraints.RelativeTolerance;
    assumable.assumeThat(actual, IsEqualTo(expected, ...
        'Within', AbsoluteTolerance(abstol) | RelativeTolerance(reltol)));

    assumeThat を介して IsEqualToAbsoluteTolerance および RelativeTolerance 制約を直接使用した場合、使用できる機能の数が増えます。

  • テスト環境がテスト エラーを回避するために必要な前提条件を満たしていることを確認するには、仮定検定を使用してください。仮定エラーが発生するとテストのフィルター処理が行われ、テスト フレームワークによってテストが Incomplete としてマークされます。あるいは、次のようにします。

    • 検証検定を使用して、例外をスローせずにエラーを生成して記録します。検証では例外がスローされないため、すべてのテスト内容は検証エラーが発生しても最後まで実行されます。通常の場合、検証はテストを早期終了する必要がないため、ユニット テストの主な検定となります。前提条件の違反や不適切なテスト設定がないかどうかをテストするには、他の検定タイプを使用します。詳細については、matlab.unittest.qualifications.Verifiable を参照してください。

    • エラー条件によって現在のテスト内容の残りが無効になっても、それ以降のテスト メソッドは正しく実行される場合、アサーション検定を使用してください。アサーション地点におけるエラーによって、現在のテスト メソッドが失敗し不完全となります。詳細については、matlab.unittest.qualifications.Assertable を参照してください。

    • エラーが発生した場合にテスト セッションを中止するには、致命的なアサーション検定を使用してください。これらの検定は、エラー モードがあまりに根本的なものであり、テストを続行する意義がない場合に役立ちます。また、フィクスチャの破棄で MATLAB の状態が正しく復元されず、テストを中止して新しいセッションを開始する方が望ましい場合にも有益です。詳細については、matlab.unittest.qualifications.FatalAssertable を参照してください。

R2013a で導入