Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

verifyInstanceOf

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

値が指定したタイプのオブジェクトであることを検証する

構文

verifyInstanceOf(verifiable,actual,className)
verifyInstanceOf(verifiable,actual,metaClass)
verifyInstanceOf(___,diagnostic)

説明

verifyInstanceOf(verifiable,actual,className) は、actual が MATLAB® 値であり、そのクラスが className で指定されていることを検証します。

verifyInstanceOf(verifiable,actual,metaClass) は、actual が MATLAB 値であり、そのクラスが meta.class インスタンス metaClass で指定されていることを検証します。

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

入力引数

verifiable

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

actual

テストする値。

className

クラスの名前。文字ベクトルとして指定します。

metaClass

meta.class のインスタンス。

diagnostic

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

  • string 配列

  • 文字配列

  • 関数ハンドル

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

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

すべて展開する

これらの対話型テストでは、数 5 のクラスを検証します。

テスト用に TestCase オブジェクトと値を作成します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
actvalue = 5;

actvaluedouble クラスのインスタンスであることを検証します。

verifyInstanceOf(testCase, actvalue, 'double');
Interactive verification passed.

actvaluechar のインスタンスであるか検証します。

verifyInstanceOf(testCase, 5, 'char');
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyInstanceOf failed.
--> The value must be an instance of the expected type.
    
    Actual Class:
        double
    Expected Type:
        char

Actual Value:
         5

テストが失敗しました。

これらのテストは、meta.class インスタンス ?function_handle として指定された関数ハンドルを検証します。

関数ハンドルを作成します。

fh = @sin;
testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyInstanceOf(testCase, fh, ?function_handle);
Interactive verification passed.

関数名をテストします。

fh = 'sin';
verifyInstanceOf(testCase, fh, ?function_handle);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyInstanceOf failed.
--> The value must be an instance of the expected type.
    
    Actual Class:
        char
    Expected Type:
        function_handle

Actual Value:
    sin

テストが失敗しました。

派生クラスが基本クラスと同じクラスでないことを検証します。

クラス BaseExample を作成します。

classdef BaseExample
end

派生クラス DerivedExample を作成します。

classdef DerivedExample < BaseExample
end

DerivedExampleBaseExample のインスタンスであることを検証します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
testCase.verifyInstanceOf(DerivedExample(), ?BaseExample);
Interactive verification passed.

BaseExampleDerivedExample のインスタンスでないことを検証します。

testCase.verifyInstanceOf(BaseExample(), ?DerivedExample);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyInstanceOf failed.
--> The value must be an instance of the expected type.
    
    Actual Class:
        BaseExample
    Expected Type:
        DerivedExample

Actual Value:
      BaseExample with no properties.

テストが失敗しました。

ヒント

  • このメソッドは、以下と機能的に等価です。

    import matlab.unittest.constraints.IsInstanceOf;
    verifiable.verifyThat(actual, IsInstanceOf(className));
    verifiable.verifyThat(actual, IsInstanceOf(metaClass));
    

    verifyThat を介して IsInstanceOf 制約を直接使用した場合、使用できる機能の数が増えます。

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

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

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

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

R2013a で導入