Main Content

matlab.unittest.qualifications.FatalAssertable クラス

パッケージ: matlab.unittest.qualifications

テストの実行を中断する検定

説明

FatalAssertable クラスは、テストの実行を中断する検定を提供します。エラーの発生時に実行されるアクションを除いて、FatalAssertable クラスは matlab.unittest.qualifications パッケージにある他の検定クラスと同様に機能します。

致命的なアサーション エラーが発生すると、FatalAssertable クラスは FatalAssertionFailedException オブジェクトをスローしてテスト フレームワークにエラーを通知します。フレームワークは、エラーの診断情報を表示して、テスト セッションを中断します。この動作は、エラーがあまりに根本的なものであり、テストを続行する意義がない場合に役立ちます。また、フィクスチャの破棄で致命的なアサーションを使用すると、環境の状態が正しく回復されることを保証できます。フィクスチャの破棄を例外安全にできる場合や、エラーの発生後に状態を回復できる場合は、代わりにアサーションを使用します。

致命的なアサーションでは、基本的なテストのエラーに起因する誤ったテスト エラーを回避できます。前のテストで状態を回復できなかった場合にも、誤ったテスト エラーを回避できます。フレームワークでフィクスチャの破棄を適切に行うことができない場合、状態を手動でリセットする必要があります。たとえば、MATLAB® の再起動が必要となる場合があります。

matlab.unittest.qualifications.FatalAssertable クラスは handle クラスです。

メソッド

すべて展開する

イベント

イベント名トリガーイベント データイベントの属性
FatalAssertionFailed致命的なアサーションの失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

FatalAssertionPassed致命的なアサーションの成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

すべて折りたたむ

オペレーティング システム環境変数の値を設定する関数をテストします。テストの後に環境変数を元の値にリセットできない場合、致命的なアサーション エラーを使用してテスト セッションを中止します。

現在のフォルダー内のファイルに、関数 setUserName を作成します。この関数は setenv への呼び出しを使用して、'UserName' 環境変数を設定します。

function setUserName(name)
setenv('UserName',name)
end

関数 setUserName をテストするには、現在のフォルダーに SetUserNameTest という名前のテスト クラスを作成します。テストに必要なクラス メンバーを定義します。

  • OriginalUserName プロパティ — このプロパティを使用して、テスト後に環境変数をリセットします。

  • testUpdate Test メソッド — 環境変数の元の値を格納し、テスト対象の関数を呼び出して、関数が環境変数を期待された値に設定することを検証します。状態はテスト中に変化するため、テストが最後まで実行されたら状態を復元するように、addTeardown への呼び出しを含めます。

  • resetUserName 補助メソッド — 関数 setUserName を呼び出して、環境変数をリセットします。操作が正常に完了しない場合、致命的なアサーション エラーを使用してテスト セッションを中止します。

classdef SetUserNameTest < matlab.unittest.TestCase
    properties (SetAccess = private)
        OriginalUserName
    end
    
    methods (Test)
        function testUpdate(testCase)
            testCase.OriginalUserName = getenv('UserName');
            setUserName('David')
            testCase.addTeardown(@() testCase.resetUserName)
            testCase.verifyEqual(getenv('UserName'),'David')
        end
    end

    methods (Access = private)
        function resetUserName(testCase)
            setUserName(testCase.OriginalUserName)
            testCase.fatalAssertEqual(getenv('UserName'),testCase.OriginalUserName)
        end
    end
end

SetUserNameTest クラスを実行します。テストはパスします。

runtests("SetUserNameTest")
Running SetUserNameTest
.
Done SetUserNameTest
__________
ans = 
  TestResult with properties:

          Name: 'SetUserNameTest/testUpdate'
        Passed: 1
        Failed: 0
    Incomplete: 0
      Duration: 0.0226
       Details: [1×1 struct]

Totals:
   1 Passed, 0 Failed, 0 Incomplete.
   0.022649 seconds testing time.

詳細

すべて展開する

バージョン履歴

R2013a で導入