onFailure
クラス: matlab.unittest.fixtures.Fixture
名前空間: matlab.unittest.fixtures
フィクスチャのセットアップおよび破棄におけるエラーの診断情報を動的に追加する
説明
onFailure(
は、フィクスチャのセットアップ ルーチンおよび破棄ルーチンにおけるエラーの診断情報を追加します。テスト フレームワークでエラーが発生した場合、診断を実行します。既定では、検証エラー、アサーション エラー、致命的なアサーション エラー、およびキャッチされていない例外の発生時に、これらの診断が実行されます。 fixture
,failureDiag
)
onFailure(
は、テスト フレームワークで仮定エラーが発生した場合も診断を実行するかどうかを示します。仮定エラーの発生時にも診断を実行するには、fixture
,failureDiag
,'IncludingAssumptionFailures',tf)tf
を true
に設定します。
入力引数
fixture
— フィクスチャのインスタンス
matlab.unittest.fixtures.Fixture
インスタンス
フィクスチャのインスタンス。matlab.unittest.fixtures.Fixture
として指定します。
failureDiag
— 診断情報
文字ベクトル | string 配列 | 関数ハンドル | matlab.automation.diagnostics.Diagnostic
インスタンスの配列
エラーの発生時に表示する診断情報。文字ベクトル、string 配列、関数ハンドル、または matlab.automation.diagnostics.Diagnostic
インスタンスの配列として指定します。
例: @() disp('Failure Detected')
例: matlab.unittest.diagnostics.ScreenshotDiagnostic
tf
— 仮定エラーへの反応
false
(既定値) | true
仮定エラーへの反応。false
(logical
の 0) または true
(logical
の 1) として指定します。この既定値は false
で、テスト フレームワークは、検証エラー、アサーション エラー、致命的なアサーション エラー、およびキャッチされていない例外の発生時に診断を実行します。ただし、フレームワークは仮定エラーの発生時に診断を実行しません。仮定エラーの発生時に追加の診断を実行するには、この値を true
に指定します。
例
フィクスチャ エラーの診断を追加
現在の作業フォルダー内に FormatHexFixture
フィクスチャを作成します。テスト フレームワークでフィクスチャのセットアップ中にアサーション エラーが発生し、エラー発生時に診断メッセージを表示します。
classdef FormatHexFixture < matlab.unittest.fixtures.Fixture properties (Access=private) OriginalFormat end methods function setup(fixture) fixture.OriginalFormat = format().NumericFormat; format("hex") fixture.addTeardown(@format,fixture.OriginalFormat) fixture.onFailure(['Failure detected in ' mfilename("class")]) fixture.assertEqual(format().NumericFormat,"short") end end end
現在の作業フォルダー内に次のテスト クラス SampleTest.m
を作成します。
classdef SampleTest < matlab.unittest.TestCase methods (Test) function test1(testCase) testCase.applyFixture(FormatHexFixture); actStr = getColumnForDisplay([1;2;3], 'Small Integers'); expStr = ['Small Integers ' '3ff0000000000000' '4000000000000000' '4008000000000000']; testCase.verifyEqual(actStr, expStr) end end end function str = getColumnForDisplay(values, title) elements = cell(numel(values)+1, 1); elements{1} = title; for idx = 1:numel(values) elements{idx+1} = displayNumber(values(idx)); end str = char(elements); end function str = displayNumber(n) str = strtrim(evalc('disp(n);')); end
テストを実行します。onFailure
診断は見出し "Additional Diagnostics" の下に表示されます。
results = runtests('SampleTest');
Running SampleTest ================================================================================ Assertion failed in SampleTest/test1 and it did not run to completion. --------------------- Framework Diagnostic: --------------------- assertEqual failed. --> The strings are not equal. Actual Value: "hex" Expected Value: "short" ---------------------- Additional Diagnostic: ---------------------- Failure detected in FormatHexFixture ------------------ Stack Information: ------------------ In C:\work\FormatHexFixture.m (FormatHexFixture.setup) at 12 ================================================================================ . Done SampleTest __________ Failure Summary: Name Failed Incomplete Reason(s) ============================================================ SampleTest/test1 X X Failed by assertion.
バージョン履歴
R2017b で導入R2019a: Access
属性が protected
に変更
onFailure
メソッドの Access
属性が public
から protected
に変更されました。この変更により、onFailure
の使用が、matlab.unittest.fixtures.Fixture
クラスから派生したクラスに制限されます。
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)