Main Content

verifySameHandle

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

2 つのハンドル配列が同じであることを検証する

説明

verifySameHandle(testCase,actual,expected) は、actual が必要なハンドル配列と同じであることを検証します。2 つのハンドル配列は、同じサイズで、対応する要素が同じハンドル オブジェクトを参照している場合、同じになります。

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

入力引数

すべて展開する

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

テストする値。任意のデータ型の値として指定します。任意のデータ型の値を指定できますが、actual がハンドル配列ではない場合、テストは失敗します。

期待される値。ハンドル配列として指定します。

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

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

例: "My Custom Diagnostic"

例: @dir

属性

Sealedtrue

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

すべて展開する

実際の値が指定されたハンドル配列と同じであるかテストします。

現在のフォルダー内のファイルに、ExampleHandle ハンドル クラスを作成します。

classdef ExampleHandle < handle
    properties
        Number = 1;
    end
end

変数 h1 および h2 に代入する 2 つの ExampleHandle オブジェクトを作成します。次に、h2 の値を別の変数 h3 に代入します。変数 h1 および変数 h2 は、異なるオブジェクトをポイントしますが、変数 h2 および変数 h3 は同じオブジェクトをポイントします。

h1 = ExampleHandle;
h2 = ExampleHandle;
h3 = h2;

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

h1 および h2 が同じオブジェクトをポイントしているかテストします。テストは失敗します。

verifySameHandle(testCase,h1,h2,"Values must point to the same object.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Values must point to the same object.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifySameHandle failed.
    --> Values do not refer to the same handle.
    
    Actual Value:
      ExampleHandle with properties:
    
        Number: 1
    Expected Handle Object:
      ExampleHandle with properties:
    
        Number: 1
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestHandlesForEqualityExample.m (TestHandlesForEqualityExample) at 29

h2 および h3 が同じオブジェクトをポイントしていることを検証します。

verifySameHandle(testCase,h2,h3)
Verification passed.

[h2 h3] および [h3 h2] が同じであることを検証します。対応するベクトル要素が同じオブジェクトをポイントしているため、テストはパスします。

verifySameHandle(testCase,[h2 h3],[h3 h2])
Verification passed.

[h1 h2][h2 h1] が同じであるかをテストします。対応するベクトル要素が異なるオブジェクトをポイントしているため、テストは失敗します。

verifySameHandle(testCase,[h1 h2],[h2 h1])
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifySameHandle failed.
    --> Some elements in the handle array refer to the wrong handle.
    
    Actual Value:
      1×2 ExampleHandle array with properties:
    
        Number
    Expected Handle Object:
      1×2 ExampleHandle array with properties:
    
        Number
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestHandlesForEqualityExample.m (TestHandlesForEqualityExample) at 43

異なる形状の 2 つのハンドル配列が同じであるかテストします。テストは失敗します。

verifySameHandle(testCase,[h1 h1 h2 h3],[h1 h1; h2 h3])
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifySameHandle failed.
    --> Sizes do not match.
        	Actual Value Size           : [1  4]
        	Expected Handle Object Size : [2  2]
    
    Actual Value:
      1×4 ExampleHandle array with properties:
    
        Number
    Expected Handle Object:
      2×2 ExampleHandle array with properties:
    
        Number
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestHandlesForEqualityExample.m (TestHandlesForEqualityExample) at 48

ヒント

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

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

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

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

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

バージョン履歴

R2013a で導入

すべて展開する