このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
matlab.unittest.qualifications.FatalAssertable クラス
パッケージ: matlab.unittest.qualifications
テストの実行を中断する検定
説明
FatalAssertable
クラスは、テストの実行を中断する検定を提供します。エラーの発生時に実行されるアクションを除いて、FatalAssertable
クラスは matlab.unittest.qualifications
パッケージにある他の検定クラスと同様に機能します。
致命的なアサーション エラーが発生すると、FatalAssertable
クラスは FatalAssertionFailedException
オブジェクトをスローしてテスト フレームワークにエラーを通知します。フレームワークは、エラーの診断情報を表示して、テスト セッションを中断します。この動作は、エラーがあまりに根本的なものであり、テストを続行する意義がない場合に役立ちます。また、フィクスチャの破棄で致命的なアサーションを使用すると、環境の状態が正しく回復されることを保証できます。フィクスチャの破棄を例外安全にできる場合や、エラーの発生後に状態を回復できる場合は、代わりにアサーションを使用します。
致命的なアサーションでは、基本的なテストのエラーに起因する誤ったテスト エラーを回避できます。前のテストで状態を回復できなかった場合にも、誤ったテスト エラーを回避できます。フレームワークでフィクスチャの破棄を適切に行うことができない場合、状態を手動でリセットする必要があります。たとえば、MATLAB® の再起動が必要となる場合があります。
matlab.unittest.qualifications.FatalAssertable
クラスは handle
クラスです。
メソッド
パブリック メソッド
FatalAssertable
クラスは、値をテストしてエラーに対応するための複数の検定メソッドを提供します。たとえば、fatalAssertEmpty
は値が空であることをテストし、fatalAssertTrue
は実績値が true であることをテストします。
メモ
FatalAssertable
クラスのメソッドは、Verifiable
クラスのメソッドに対応します。検定タイプのみが異なります。FatalAssertable
メソッドは、Verifiable
メソッドと同じ方法で呼び出しが可能です。
fatalAssertEqual |
入力引数
名前と値の引数
|
fatalAssertFail |
無条件の致命的なアサーション エラーが生成されます。 入力引数
|
fatalAssertFalse |
入力引数
|
fatalAssertNotEqual |
入力引数
|
fatalAssertNotSameHandle |
入力引数
|
fatalAssertReturnsTrue |
入力引数
|
fatalAssertSameHandle |
入力引数
|
fatalAssertThat |
入力引数
|
fatalAssertTrue |
入力引数
|
fatalAssertError |
入力引数
出力引数
|
fatalAssertWarning |
入力引数
出力引数
|
fatalAssertWarningFree |
入力引数
出力引数
|
fatalAssertGreaterThan |
入力引数
|
fatalAssertGreaterThanOrEqual |
入力引数
|
fatalAssertLessThan |
入力引数
|
fatalAssertLessThanOrEqual |
入力引数
|
fatalAssertEmpty |
入力引数
|
fatalAssertLength |
入力引数
|
fatalAssertNotEmpty |
入力引数
|
fatalAssertNumElements |
入力引数
|
fatalAssertSize |
入力引数
|
fatalAssertClass |
入力引数
|
fatalAssertInstanceOf |
入力引数
|
fatalAssertMatches |
入力引数
|
fatalAssertSubstring |
入力引数
|
イベント
イベント名 | トリガー | イベント データ | イベントの属性 |
---|---|---|---|
FatalAssertionFailed | 致命的なアサーションの失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
FatalAssertionPassed | 致命的なアサーションの成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
例
状態が破損した場合のテスト セッションの中止
オペレーティング システム環境変数の値を設定する関数をテストします。テストの後に環境変数を元の値にリセットできない場合、致命的なアサーション エラーを使用してテスト セッションを中止します。
現在のフォルダー内のファイルに、関数 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.
詳細
診断
テスト フレームワークでは、テスト ランナーの構成に応じて検定にパスしたときか失敗したときに診断を表示する場合があります。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin
インスタンスを使用できます。
診断メッセージをテスト ケースに追加するには、いずれかの検定メソッドでオプションの diagnostic
引数を使用します。diagnostic
を string 配列、文字配列、関数ハンドル、または matlab.unittest.diagnostics.Diagnostic
オブジェクトの配列として指定できます。
例外安全
エラーの発生時にすべてのフィクスチャの破棄が TestCase
クラスまたは Fixture
クラスの addTeardown
メソッドで実行される場合、あるいはオブジェクトのデストラクターを使用して実行される場合、テストの内容は "例外安全" となります。例外安全により、例外がスローされた場合でも、テストのエラーが後続のテストに影響を与えないことが確保されます。
たとえば、以下のコードは例外安全ではありません。テストが失敗した場合、Figure はテスト フレームワークで閉じられません。
% Not exception safe
f = figure;
testCase.fatalAssertEqual(actual,expected)
close(f)
これに対して、以下のコードは、テスト結果に関係なくフレームワークで Figure が閉じられるため、例外安全です。
% Exception safe
f = figure;
testCase.addTeardown(@close,f)
testCase.fatalAssertEqual(actual,expected)
addTeardown
を使用してフィクスチャを破棄すれば必ずコードが例外安全になるわけではありません。以下のコードは、テストの後に addTeardown
の呼び出しが配置されているため、例外安全ではありません。テストが失敗した場合、Figure はフレームワークで閉じることができません。
% Not exception safe
f = figure;
testCase.fatalAssertEqual(actual,expected)
testCase.addTeardown(@close,f)
バージョン履歴
R2013a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)