Main Content

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

verifyFail

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

無条件の検証エラーの生成

構文

verifyFail(verifiable)
verifyFail(verifiable,diagnostic)

説明

verifyFail(verifiable) の発生時に、無条件の検証エラーが生成されます。

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

入力引数

verifiable

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

diagnostic

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

  • string 配列

  • 文字配列

  • 関数ハンドル

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

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

すべて展開する

このメソッドが使用可能な例は、特定のシナリオでは実行してはならないコールバック関数です。テストでは、コード パスに達した場合にエラーを無条件で実行することで、これが発生しないことを確認します。

ハンドル クラス MyHandleSomethingHappened イベントを使用して作成します。

classdef MyHandle < handle
    events
        SomethingHappened
    end
end

次の TestCase クラスを含むファイル ListenerTest を MATLAB® パス上に作成します。

classdef ListenerTest < matlab.unittest.TestCase
    methods(Test)
        function testDisabledListeners(testCase)
            h = MyHandle;
            
            % Add a listener to a test helper method
            listener = h.addlistener('SomethingHappened', ...
                @testCase.shouldNotGetCalled);
            
            % Passing scenario (code path is not reached)
            %%%%%%%%%%%%%%%%%%%%
            % Disabled listener should not invoke callbacks
            listener.Enabled = false;
            h.notify('SomethingHappened');
            
            % Failing scenario (code path is reached)
            %%%%%%%%%%%%%%%%%%%%
            % Enabled listener invoke callback and fail
            listener.Enabled = true;
            h.notify('SomethingHappened');
        end
    end
    
    methods
        function shouldNotGetCalled(testCase, ~, ~)
            % A test helper callback method that should not execute
            testCase.verifyFail('This listener callback should not have executed');
        end
    end
    
end

コマンド プロンプトからテストを実行します。

run(ListenerTest);
Running ListenerTest

================================================================================
Verification failed in ListenerTest/testDisabledListeners.

    ----------------
    Test Diagnostic:
    ----------------
    This listener callback should not have executed

    ------------------
    Stack Information:
    ------------------
    In C:\Desktop\ListenerTest.m (ListenerTest.shouldNotGetCalled) at 27
    In C:\\Desktop\ListenerTest.m (@(varargin)testCase.shouldNotGetCalled(varargin{:})) at 8
    In C:\Desktop\ListenerTest.m (ListenerTest.testDisabledListeners) at 20
================================================================================
.
Done ListenerTest
__________

Failure Summary:

     Name                                Failed  Incomplete  Reason(s)
    =================================================================================
     ListenerTest/testDisabledListeners    X                 Failed by verification.

ヒント

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

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

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

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

R2013a で導入