Main Content

verifyReturnsTrue

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

関数が true を返すことを検証する

説明

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

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

入力引数

すべて展開する

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

テストする値。任意のデータ型の値として指定します。任意のデータ型の値を指定できますが、actual が関数ハンドルではない場合、テストは失敗します。

例: @() myFunction(1,2)

例: @() ~strcmp('a','b')

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

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

例: "My Custom Diagnostic"

例: @dir

属性

Sealedtrue

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

すべて展開する

実際の値が、true を返す関数ハンドルであるかをテストします。

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

関数 true をテストします。

verifyReturnsTrue(testCase,@true)
Verification passed.

関数 false をテストします。false は true を返さないため、テストは失敗します。

verifyReturnsTrue(testCase,@false)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyReturnsTrue failed.
    --> The function handle did not evaluate to "true".
    --> Returned value:
              logical
            
               0
    
    Evaluated Function:
      function_handle with value:
    
        @false
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestIfFunctionReturnsTrueExample.m (TestIfFunctionReturnsTrueExample) at 19

2 つの等価な数値を与えた場合、isequal の呼び出しが true を返すかテストします。

verifyReturnsTrue(testCase,@() isequal(1,single(1)))
Verification passed.

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

verifyReturnsTrue(testCase,@() ~strcmp('a','b'))
Verification passed.

true 値のベクトルを返す関数をテストします。戻り値が非スカラーであるため、テストは失敗します。

verifyReturnsTrue(testCase,@() strcmp('a',{'a','a'}))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyReturnsTrue failed.
    --> The function handle did not return a scalar. The return value had a size of [1  2].
    --> Returned value:
              1×2 logical array
            
               1   1
    
    Evaluated Function:
      function_handle with value:
    
        @()strcmp('a',{'a','a'})
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestIfFunctionReturnsTrueExample.m (TestIfFunctionReturnsTrueExample) at 33

数値を返す関数をテストします。テストは失敗します。

verifyReturnsTrue(testCase,@ones, ...
    "Returned value must be a logical scalar.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Returned value must be a logical scalar.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyReturnsTrue failed.
    --> The function handle did not return a logical value. The return value was of type "double".
    --> Returned value:
                 1
    
    Evaluated Function:
      function_handle with value:
    
        @ones
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestIfFunctionReturnsTrueExample.m (TestIfFunctionReturnsTrueExample) at 37

ヒント

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

    import matlab.unittest.constraints.ReturnsTrue
    testCase.verifyThat(actual,ReturnsTrue)
    
  • verifyReturnsTrue の代替方法は verifyTrue メソッドです。verifyTrue は実行速度が速く、使いやすいですが、verifyReturnsTrue はわずかに優れた診断情報を提供します。この例では両方のテストが失敗しますが、2 番目のテストは診断の一部として関数ハンドルを表示します。

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

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

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

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

バージョン履歴

R2013a で導入