Main Content

verifyClass

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

指定した値のクラスを検証する

説明

verifyClass(testCase,actual,class) は、actual のクラスが指定したクラスであることを検証します。

このメソッドは、クラスが正確に一致していることを検証します。クラス階層に含まれることを検証するには、verifyInstanceOf を使用します。

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

入力引数

すべて展開する

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

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

想定されるクラス。string スカラー、文字ベクトル、または meta.class インスタンスとして指定します。

例: "MyClass"

例: ?MyClass

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

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

例: "My Custom Diagnostic"

例: @dir

属性

Sealedtrue

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

すべて展開する

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

数値 5 のクラスが double であることを検証します。

verifyClass(testCase,5,"double")
Verification passed.

string の代わりに meta.class インスタンスを使用して、このテストをもう一度実行します。

verifyClass(testCase,5,?double)
Verification passed.

0 が logical 値であるかテストします。テストは失敗します。

verifyClass(testCase,0,"logical","Value must be logical.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Value must be logical.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyClass failed.
    --> The value's class is incorrect.
        
        Actual Class:
            double
        Expected Class:
            logical
    
    Actual Value:
         0
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestNumericValuesExample.m (TestNumericValuesExample) at 20

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

@sin が関数ハンドルであることを検証します。

verifyClass(testCase,@sin,?function_handle)
Verification passed.

関数名 "sin" を使用して、テストをもう一度実行します。テストは失敗します。

verifyClass(testCase,"sin",?function_handle)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyClass failed.
    --> The value's class is incorrect.
        
        Actual Class:
            string
        Expected Class:
            function_handle
    
    Actual Value:
        "sin"
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestAFunctionHandleExample.m (TestAFunctionHandleExample) at 17

verifyClass メソッドを使用して、クラスが正確に一致するかテストします。

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

classdef ExampleHandle < handle
    properties
        Number = 1;
    end
end

定義したクラスのインスタンスを作成します。

actual = ExampleHandle;

対話型テスト用にテスト ケースを作成して、actual のクラスが ExampleHandle であることを検証します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyClass(testCase,actual,?ExampleHandle)
Verification passed.

handle クラスを使用して、テストをもう一度実行します。handle は実際の値の正確なクラスではないため、テストは失敗します。

verifyClass(testCase,actual,?handle)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyClass failed.
    --> The value's class is incorrect.
        
        Actual Class:
            ExampleHandle
        Expected Class:
            handle
    
    Actual Value:
      ExampleHandle with properties:
    
        Number: 1
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestInstanceOfADerivedClassExample.m (TestInstanceOfADerivedClassExample) at 26

verifyClass を使用して、関数の出力のクラスをテストします。

現在のフォルダー内のファイルに、関数 add5 を作成します。この関数は、数値入力を受け入れて 5 だけインクリメントします。

function y = add5(x)
% add5 - Increment input by 5
if ~isa(x,"numeric")
    error("add5:InputMustBeNumeric","Input must be numeric.")
end
y = x + 5;
end

有効な入力を指定して関数を呼び出します。

actual = add5(1);

対話型テスト用にテスト ケースを作成して、actual のクラスが double であることを検証します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyClass(testCase,actual,?double)
Verification passed.

ヒント

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

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

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

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

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

バージョン履歴

R2013a で導入