verifyFail
クラス: matlab.unittest.qualifications.Verifiable
パッケージ: matlab.unittest.qualifications
無条件の検証エラーの生成
説明
verifyFail(
は、さらに testCase
,diagnostic
)diagnostic
の診断情報を検定に関連付けます。
入力引数
testCase
— テスト ケース
matlab.unittest.qualifications.Verifiable
オブジェクト
テスト ケース。matlab.unittest.qualifications.Verifiable
オブジェクトとして指定します。matlab.unittest.TestCase
クラスは matlab.unittest.qualifications.Verifiable
をサブクラス化してそのメソッドを継承するため、testCase
は通常 matlab.unittest.TestCase
オブジェクトです。
diagnostic
— 表示する診断情報
string 配列 | 文字配列 | 関数ハンドル | matlab.automation.diagnostics.Diagnostic
オブジェクトの配列
検定にパスしたときか失敗したときに表示する診断情報。string 配列、文字配列、関数ハンドル、または matlab.automation.diagnostics.Diagnostic
オブジェクトの配列として指定します。
テスト ランナーの構成に応じて、テスト フレームワークは検定にパスしたときまたは失敗したときに診断を表示できます。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin
インスタンスを使用します。
例: "My Custom Diagnostic"
例: @dir
例
新機能をテストするプレースホルダーの作成
新機能に必要なすべてのテストを記述できない場合、まだ実装していないテスト用のプレースホルダーとして無条件テスト エラーを使用します。エラーにより、機能の開発に必要なテストが通知されます。
現在のフォルダー内のファイルに、FeatureTest
クラスを作成します。verifyFail
メソッドを使用して、新機能をテストする 2 つのプレースホルダーを追加します。
classdef FeatureTest < matlab.unittest.TestCase methods (Test) function defaultBehavior(testCase) testCase.verifyFail end function otherBehavior(testCase) testCase.verifyFail("Add code to test nondefault behavior.") end end end
テストを実行すると、両方とも無条件で失敗します。
runtests("FeatureTest")
Running FeatureTest ================================================================================ Verification failed in FeatureTest/defaultBehavior. ------------------ Stack Information: ------------------ In C:\work\FeatureTest.m (FeatureTest.defaultBehavior) at 4 ================================================================================ . ================================================================================ Verification failed in FeatureTest/otherBehavior. ---------------- Test Diagnostic: ---------------- Add code to test nondefault behavior. ------------------ Stack Information: ------------------ In C:\work\FeatureTest.m (FeatureTest.otherBehavior) at 7 ================================================================================ . Done FeatureTest __________ Failure Summary: Name Failed Incomplete Reason(s) ========================================================================== FeatureTest/defaultBehavior X Failed by verification. -------------------------------------------------------------------------- FeatureTest/otherBehavior X Failed by verification. ans = 1×2 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 0 Passed, 2 Failed, 0 Incomplete. 0.087462 seconds testing time.
コールバック実行時のエラーの生成
verifyFail
を使用すると、特定の条件でコードの一部が実行されないことを確認できます。たとえば、verifyFail
への呼び出しをコールバック メソッド内に配置することにより、望んでいないこのコールバックを実行しようとすると検証エラーになります。
現在のフォルダー内のファイルに、イベントをもつハンドル クラスを作成します。
classdef MyHandle < handle events SomethingHappened end end
現在のフォルダーに ListenerTest
クラスを作成します。イベント ソースとイベントのリスナーを作成するコード、およびリスナー コールバックとして機能する補助メソッドを作成するコードを追加します。次に、イベントがトリガーされたときのコールバックの動作をテストする 2 つの Test
メソッドを追加します。
classdef ListenerTest < matlab.unittest.TestCase properties Source Listener end methods (TestMethodSetup) function setup(testCase) % Create the event source testCase.Source = MyHandle; % Add a listener to test execution of the callback code testCase.Listener = testCase.Source.addlistener( ... "SomethingHappened",@testCase.forbiddenCallback); % Remove the listener after the test testCase.addTeardown(@delete,testCase.Listener) end end methods (Test) function passingTest(testCase) % Disable the listener testCase.Listener.Enabled = false; testCase.Source.notify("SomethingHappened") % Callback does not run end function failingTest(testCase) % The listener is enabled by default testCase.Source.notify("SomethingHappened") % Callback runs end end methods function forbiddenCallback(testCase,~,~) % Test fails unconditionally testCase.verifyFail("This callback must not run!") end end end
テストを実行します。passingTest
はリスナーを無効にしてイベントをトリガーします。そのためコールバックは実行されず、テストはパスします。ただし、failingTest
がイベントをトリガーした場合は、forbiddenCallback
が実行され、verifyFail
によって生成されるエラーとなります。
runtests("ListenerTest")
Running ListenerTest . ================================================================================ Verification failed in ListenerTest/failingTest. ---------------- Test Diagnostic: ---------------- This callback must not run! ------------------ Stack Information: ------------------ In C:\work\ListenerTest.m (ListenerTest.forbiddenCallback) at 34 In C:\work\ListenerTest.m (@(varargin)testCase.forbiddenCallback(varargin{:})) at 13 In C:\work\ListenerTest.m (ListenerTest.failingTest) at 27 ================================================================================ . Done ListenerTest __________ Failure Summary: Name Failed Incomplete Reason(s) ======================================================================= ListenerTest/failingTest X Failed by verification. ans = 1×2 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 1 Passed, 1 Failed, 0 Incomplete. 0.20956 seconds testing time.
ヒント
検証検定を使用して、例外をスローせずにエラーを生成して記録します。検証では例外がスローされないため、すべてのテスト内容は検証エラーが発生しても最後まで実行されます。通常の場合、検証はテストを早期終了する必要がないため、ユニット テストの主な検定となります。前提条件の違反や不適切なテスト設定がないかどうかをテストするには、他の検定タイプを使用します。
テスト環境がテスト エラーを回避するために必要な前提条件を満たしていることを確認するには、仮定検定を使用してください。仮定エラーが発生するとテストのフィルター処理が行われ、テスト フレームワークによってテストが
Incomplete
としてマークされます。詳細については、matlab.unittest.qualifications.Assumable
を参照してください。エラー条件によって現在のテスト内容の残りが無効になっても、それ以降のテストは正しく実行される場合、アサーション検定を使用してください。アサーション地点におけるエラーによって、現在のテストが
Failed
およびIncomplete
となります。詳細については、matlab.unittest.qualifications.Assertable
を参照してください。エラーが発生した場合にテスト セッションを中止するには、致命的なアサーション検定を使用してください。これらの検定は、エラーがあまりに根本的なものであり、テストを続行する意義がない場合に役立ちます。致命的なアサーション検定は、フィクスチャの破棄で環境の状態が正しく復元されず、テストを中止して新しいセッションを開始する方が望ましい場合にも有益です。詳細については、
matlab.unittest.qualifications.FatalAssertable
を参照してください。
バージョン履歴
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)