Main Content

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

verifyWarning

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

関数が指定された警告を表示することを検証する

構文

verifyWarning(verifiable,actual,warningIDs)
verifyWarning(verifiable,actual,warningIDs,diagnostic)
[output1,...,outputN] = verifyWarning(___)

説明

verifyWarning(verifiable,actual,warningIDs) は、actual が識別子 warningIDs をもつ警告を表示することを検証します。

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

[output1,...,outputN] = verifyWarning(___) は、actual の呼び出し時に生成された出力引数 output1,...,outputN も返します

入力引数

verifiable

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

actual

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

warningIDs

警告識別子。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。

diagnostic

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

  • string 配列

  • 文字配列

  • 関数ハンドル

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

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

出力引数

output1,...,outputN

actual からの 1 ~ n 番目 (存在する場合) の出力引数です。任意のタイプで返されます。引数のタイプは、actual 引数のリストで指定します。

すべて展開する

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

実際の警告識別子が入力の警告識別子と同じであることを検証します。

verifyWarning(testCase, @() warning('SOME:warning:id', 'Warning!'), ...
    'SOME:warning:id');
Verification passed.
verifyWarning(testCase, @() warning('SOME:other:id', 'Warning message'), ...
    'SOME:warning:id', 'Did not issue specified warning');
Warning: Warning message 
> In @()warning('SOME:other:id','Warning message')
  In matlab.unittest.internal.constraints/FunctionHandleConstraint/invoke (line 35)
  In matlab.unittest.internal.constraints/WarningQualificationConstraint/invoke (line 41)
  In matlab.unittest.constraints/IssuesWarnings/invoke (line 429)
  In matlab.unittest.constraints.IssuesWarnings>@()constraint.invoke(fcn) (line 540)
  In matlab.unittest.internal.fevalcRespectingHotlinks/hotwrap (line 18)
  In matlab.unittest.internal.fevalcRespectingHotlinks (line 14)
  In matlab.unittest.constraints/IssuesWarnings/invokeCapturingOutput (line 540)
  In matlab.unittest.constraints/IssuesWarnings/issuesExpectedWarnings (line 549)
  In matlab.unittest.constraints/IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.constraints/CasualDiagnosticDecorator/satisfiedBy (line 42)
  In matlab.unittest.internal.qualifications/QualificationDelegate/qualifyThat (line 79)
  In matlab.unittest.internal.qualifications/QualificationDelegate/qualifyWarning (line 200)
  In matlab.unittest.qualifications/Verifiable/verifyWarning (line 757) 
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Did not issue specified warning
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyWarning failed.
    --> The function handle did not issue the expected warning(s).
        
        Actual Warning(s):
            --> 'SOME:other:id'
        Expected Warning(s):
            --> 'SOME:warning:id'
    
    Evaluated Function:
      function_handle with value:
    
        @()warning('SOME:other:id','Warning message')

警告を表示しない関数 true をテストします。

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyWarning(testCase, @true, 'SOME:warning:id', ...
'@true did not issue any warning');
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    @true did not issue any warning
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyWarning failed.
    --> The function handle did not issue any warnings.
        
        Expected Warning(s):
            --> 'SOME:warning:id'
    
    Evaluated Function:
      function_handle with value:
    
        @true

テストが失敗しました。

警告を生成し、出力を返す関数 helper を作成します。

function varargout = helper()
    warning('SOME:warning:id', 'Warning!');
    varargout = {123, 'abc'};
end

helper を呼び出します。

testCase = matlab.unittest.TestCase.forInteractiveUse;
[actualOut1, actualOut2] = verifyWarning(testCase, @helper, ...
    'SOME:warning:id');
Verification passed.

ヒント

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

    import matlab.unittest.constraints.IssuesWarnings;
    verifiable.verifyThat(actual,IssuesWarnings(cellstr(warningIDs)));
    

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

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

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

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

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

R2013a で導入