Main Content

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

verifyReturnsTrue

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

評価時に関数が true を返すことを検証する

構文

verifyReturnsTrue(verifiable,actual)
verifyReturnsTrue(___,diagnostic)

説明

verifyReturnsTrue(verifiable,actual) は、actual がその値が true であるスカラー logical を返す関数ハンドルであることを検証します。

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

入力引数

verifiable

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

actual

テストする関数ハンドル。

diagnostic

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

  • string 配列

  • 文字配列

  • 関数ハンドル

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

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

すべて展開する

対話型テスト用に TestCase オブジェクトを作成します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyReturnsTrue(testCase, @true);
Interactive verification passed.

2 つの数値が等しいことが真であることを検証します。

verifyReturnsTrue(testCase, @() isequal(1,1));
Interactive verification passed.

2 つの文字が同一でないことが真であることを検証します。

verifyReturnsTrue(testCase, @() ~strcmp('a','b'));
Interactive verification passed.

"偽" が "真" として評価されることを検証しようとして検証が失敗します。

verifyReturnsTrue(testCase, @false);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyReturnsTrue failed.
--> The function handle should have evaluated to "true".
--> Returned value:
             0

Actual Function Handle:
        @false

テストが失敗しました。

関数ハンドルで指定されたテストにスカラー論理値ではなく論理値のベクトルを返させることにより、検証が失敗します。

verifyReturnsTrue(testCase, @() strcmp('a',{'a','a'}));
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyReturnsTrue failed.
--> The function handle should have returned a scalar. The return value had a size of [1  2].
--> Returned value:
             1     1

Actual Function Handle:
        @()strcmp('a',{'a','a'})

テストが失敗しました。

関数ハンドルで指定されたテストに論理値ではなく double を返させることにより、検証が失敗します。

verifyReturnsTrue(testCase, @() exist('exist'));
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyReturnsTrue failed.
--> The function handle should have returned a logical value. It was of type "double".
--> Returned value:
             5

Actual Function Handle:
        @()exist('exist')

テストが失敗しました。

ヒント

  • 可能であればインラインで、簡単に定義できる、簡易カスタム比較機能用のショートカットです。この機能は verifyTrue を使って関数を単に直接評価する機能よりも望ましいといえます。この関数ハンドルが診断で表示されるため、verifyTrue を使用した場合に失われるエラー条件に関する情報がより多く得られるためです。

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

    import matlab.unittest.constraints.ReturnsTrue;
    verifiable.verifyThat(actual, ReturnsTrue());
    

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

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

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

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

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

R2013a で導入