Main Content

verifyEqual

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

値が指定値と等しいことを検証する

説明

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

verifyEqual(testCase,actual,expected,diagnostic) は、さらに diagnostic の診断情報を検定に関連付けます。

verifyEqual(___,Name,Value) は、1 つ以上の名前と値の引数によって指定された追加のオプションを使用して等価性を検証します。前述の任意の構文で、すべての引数の後に名前と値の引数を指定します。R2021a 以前は、diagnostic の前に名前と値の引数を指定します。

入力引数

すべて展開する

テスト ケース。matlab.unittest.qualifications.Verifiable オブジェクトとして指定します。matlab.unittest.TestCase クラスは matlab.unittest.qualifications.Verifiable をサブクラス化してそのメソッドを継承するため、testCase は通常 matlab.unittest.TestCase オブジェクトです。

テストする値。任意のデータ型の値として指定します。

期待される値。任意のデータ型の値として指定します。

検定にパスしたときか失敗したときに表示する診断情報。string 配列、文字配列、関数ハンドル、または matlab.automation.diagnostics.Diagnostic オブジェクトの配列として指定します。

テスト ランナーの構成に応じて、テスト フレームワークは検定にパスしたときまたは失敗したときに診断を表示できます。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin インスタンスを使用します。

例: "My Custom Diagnostic"

例: @dir

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: verifyEqual(testCase,1.5,2,"AbsTol",1) は、実際の値 1.5 と期待された値 2 の差が 1 以内であることを検証します。

絶対許容誤差。数値配列として指定します。AbsTolexpected は、同じサイズであるか、互換性のあるサイズでなければなりません。互換性のある配列の詳細については、基本的な演算で互換性のある配列サイズを参照してください。

許容誤差は同じデータ型の値にのみ適用されます。絶対許容誤差を満たすには、abs(expected-actual) <= AbsToltrue である必要があります。

相対許容誤差。数値配列として指定します。RelTolexpected は、同じサイズであるか、互換性のあるサイズでなければなりません。互換性のある配列の詳細については、基本的な演算で互換性のある配列サイズを参照してください。

許容誤差は同じデータ型の値にのみ適用されます。相対許容誤差を満たすには、abs(expected-actual) <= RelTol.*abs(expected)true である必要があります。

属性

Sealedtrue

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

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

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

数値がそれ自体と等しいことを検証します。

verifyEqual(testCase,5,5)
Verification passed.

異なるサイズの値を比較します。テストは失敗します。

verifyEqual(testCase,[5 5],5)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> Sizes do not match.
        
        Actual size:
             1     2
        Expected size:
             1     1
    
    Actual Value:
         5     5
    Expected Value:
         5
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareNumericValuesExample.m (CompareNumericValuesExample) at 18

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

異なるクラスの 2 つの数値を比較します。テストは失敗します。

verifyEqual(testCase,int8(5),int16(5),"Classes must match.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Classes must match.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> Classes do not match.
        
        Actual Class:
            int8
        Expected Class:
            int16
    
    Actual Value:
      int8
    
       5
    Expected Value:
      int16
    
       5
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareClassesExample.m (CompareClassesExample) at 12

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

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

cell 配列を配列自体と比較します。テストはパスします。

verifyEqual(testCase,{'cell',struct,5},{'cell',struct,5})
Verification passed.

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

実際の値 1.5 が期待された値 2 と等しいかテストします。テストは失敗します。

verifyEqual(testCase,1.5,2)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> Failure table:
            Actual    Expected    Error    RelativeError
            ______    ________    _____    _____________
        
             1.5         2        -0.5         -0.25    
    
    Actual Value:
       1.500000000000000
    Expected Value:
         2
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingNumericTolerancesExample.m (CompareValuesUsingNumericTolerancesExample) at 13

実際の値と期待された値の差が 1 内にあることを検証します。

verifyEqual(testCase,1.5,2,"AbsTol",1)
Verification passed.

実際の値と期待された値の差が 10% 未満であるかテストします。テストは失敗します。

verifyEqual(testCase,1.5,2, ...
    "Difference must be within relative tolerance.","RelTol",0.1)
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Difference must be within relative tolerance.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual 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
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingNumericTolerancesExample.m (CompareValuesUsingNumericTolerancesExample) at 23

ヒント

  • verifyEqual は便利なメソッドです。たとえば、verifyEqual(testCase,actual,expected) は、以下のコードと機能的に等価です。

    import matlab.unittest.constraints.IsEqualTo
    testCase.verifyThat(actual,IsEqualTo(expected))

    同様に、verifyEqual(testCase,actual,expected,"AbsTol",abstol,"RelTol",reltol) は、以下のコードと機能的に等価です。

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.AbsoluteTolerance
    import matlab.unittest.constraints.RelativeTolerance
    testCase.verifyThat(actual,IsEqualTo(expected, ...
        'Within',AbsoluteTolerance(abstol) | RelativeTolerance(reltol)))

    verifyThat を介して IsEqualToAbsoluteTolerance および RelativeTolerance 制約を直接使用した場合、さらに多くの機能が使用できます。

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

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

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

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

バージョン履歴

R2013a で導入

すべて展開する