Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

verifyThat

クラス: matlab.unittest.qualifications.Verifiable
名前空間: matlab.unittest.qualifications

値が指定された制約を満たしていることを検証する

説明

verifyThat(testCase,actual,constraint) は、actual が指定された制約を満たす値であることを検証します。テスト フレームワークがテストの診断情報を表示する場合、制約が提供する診断のみ使用されます。

verifyThat(testCase,actual,constraint,diagnostic) は、さらに diagnostic の診断情報を検定に関連付けます。この構文を使用する場合、フレームワークは constraint および diagnostic 両方が提供する診断情報を表示します。

入力引数

すべて展開する

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

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

テストにパスするために実際の値が満たさなければならない制約。matlab.unittest.constraints.Constraint クラスのインスタンスとして指定します。

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

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

例: "My Custom Diagnostic"

例: @dir

属性

Sealedtrue

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

すべて展開する

実際の値が指定された制約を満たすかテストします。

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

true をテストします。IsTrue 制約を満たすことを検証します。

import matlab.unittest.constraints.IsTrue
verifyThat(testCase,true,IsTrue)
Verification passed.

string "Hello""hello" が等しいかテストします。比較は大文字小文字を区別するため、このテストは失敗します。

import matlab.unittest.constraints.IsEqualTo
verifyThat(testCase,"Hello",IsEqualTo("hello"))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> StringComparator failed.
        --> The strings are not equal.
        
        Actual Value:
            "Hello"
        Expected Value:
            "hello"
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestUsingConstraintsExample.m (TestUsingConstraintsExample) at 20

空の数値配列を含む cell 配列が空であるかテストします。テストは失敗します。

import matlab.unittest.constraints.IsEmpty
verifyThat(testCase,{[]},IsEmpty,"Cell array must be empty.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Cell array must be empty.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEmpty failed.
    --> The value must be empty.
    --> The value has a size of [1  1].
    
    Actual Value:
      1×1 cell array
    
        {0×0 double}
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestUsingConstraintsExample.m (TestUsingConstraintsExample) at 26

配列に NaN 値が含まれないことを検証します。

import matlab.unittest.constraints.HasNaN
verifyThat(testCase,[Inf -7+1i],~HasNaN)
Verification passed.

数値配列に 2 つの要素があり、両方の要素が 1 より大きいかテストします。

import matlab.unittest.constraints.HasElementCount
import matlab.unittest.constraints.IsGreaterThan
verifyThat(testCase,[3 5],HasElementCount(2) & IsGreaterThan(1))
Verification passed.

ヒント

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

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

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

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

  • 生成された C/C++ コードの形式等価性テストで verifyThat を使用するには、actualmatlabtest.coder.MATLABCoderTester (MATLAB Test) のインスタンスとして指定し、constraintmatlabtest.constraints.ExecutionMatchesMATLAB (MATLAB Test) のインスタンスとして指定します。

バージョン履歴

R2013a で導入