matlab.unittest.qualifications.Assertable クラス
パッケージ: matlab.unittest.qualifications
テストの前提条件を検証する検定
説明
Assertable
クラスは、テストの前提条件を検証する検定を提供します。エラーの発生時に実行されるアクションを除いて、Assertable
クラスは matlab.unittest.qualifications
パッケージにある他の検定クラスと同様に機能します。
アサーション エラーが発生すると、Assertable
クラスは AssertionFailedException
オブジェクトをスローしてテスト フレームワークにエラーを通知します。この動作は、アサーションの地点でのエラーにより現在のテストの残りが無効になるものの、後続のテストの適切な実行は妨げられない場合に最も役立ちます。アサーションは多くの場合、現在のテストの前提条件に違反しないようにするためや、フィクスチャが正しくセットアップされるようにするために使用します。フィクスチャの破棄を例外安全にできない場合や、エラーの発生後に環境の状態を回復できない場合は、代わりに致命的なアサーションを使用します。
TestCase
クラスのメソッド内でアサーション エラーが生成された場合、メソッドのタイプによってどのテストが影響を受けるか決まります。
Test
メソッド — フレームワークによってTest
メソッド全体が失敗および未完了とマークされます。TestMethodSetup
メソッドまたはTestMethodTeardown
メソッド — フレームワークによって、このメソッド インスタンスに実行するTest
メソッドが失敗および未完了とマークされます。TestClassSetup
メソッドまたはTestClassTeardown
メソッド — フレームワークによって、テスト クラス全体が失敗および未完了とマークされます。
アサーションにより、テストで前提条件に違反していても、状態が回復可能な場合は、残りのテストでカバレッジを受け取ることができます。無効な前提条件が原因で失敗する後続の検証を実行しないことで、不要なエラーを回避します。エラーがテストの前提条件に影響を与えたり、フィクスチャのセットアップまたは破棄の問題の原因となったりしない場合は、検証を使用してください。そうすることで、確実にすべてのテスト内容が実行されます。
matlab.unittest.qualifications.Assertable
クラスは handle
クラスです。
メソッド
パブリック メソッド
Assertable
クラスは、値をテストしてエラーに対応するための複数の検定メソッドを提供します。たとえば、assertEmpty
は値が空であることをテストし、assertTrue
は実績値が true であることをテストします。
メモ
Assertable
クラスのメソッドは、Verifiable
クラスのメソッドに対応します。検定タイプのみが異なります。Assertable
メソッドは、Verifiable
メソッドと同じ方法で呼び出しが可能です。
assertEqual |
入力引数
名前と値の引数
|
assertFail |
無条件のアサーション エラーが生成されます。 入力引数
|
assertFalse |
入力引数
|
assertNotEqual |
入力引数
|
assertNotSameHandle |
入力引数
|
assertReturnsTrue |
入力引数
|
assertSameHandle |
入力引数
|
assertThat |
入力引数
|
assertTrue |
入力引数
|
assertError |
入力引数
出力引数
|
assertWarning |
入力引数
出力引数
|
assertWarningFree |
入力引数
出力引数
|
assertGreaterThan |
入力引数
|
assertGreaterThanOrEqual |
入力引数
|
assertLessThan |
入力引数
|
assertLessThanOrEqual |
入力引数
|
assertEmpty |
入力引数
|
assertLength |
入力引数
|
assertNotEmpty |
入力引数
|
assertNumElements |
入力引数
|
assertSize |
入力引数
|
assertClass |
入力引数
|
assertInstanceOf |
入力引数
|
assertMatches |
入力引数
|
assertSubstring |
入力引数
|
イベント
イベント名 | トリガー | イベント データ | イベントの属性 |
---|---|---|---|
AssertionFailed | アサーションの失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
AssertionPassed | アサーションの成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
例
テストの前提条件の検証
一時フォルダー内のテキスト ファイルへの書き込みをテストします。ファイルを開けない場合、アサーションを使用してテストを失敗させて書き込みをスキップします。
現在のフォルダー内の TextFileTest.m
という名前のファイルで、一時フォルダー内の開いているテキスト ファイルへのデータの書き込みをテストする TextFileTest
クラスを作成します。ファイルを書き込み用に開けない場合、アサーションを使用してテストを失敗させて残りのテスト内容をスキップします。
classdef TextFileTest < matlab.unittest.TestCase methods (Test) function testWithTemporaryFolder(testCase) folder = testCase.createTemporaryFolder(); file = fullfile(folder,"myFile.txt"); fid = fopen(file,"w"); testCase.addTeardown(@fclose,fid) testCase.assertNotEqual(fid,-1,"IO Problem") txt = repmat("ab",1,1000); dataToWrite = join(txt); fprintf(fid,"%s",dataToWrite); testCase.verifyEqual(string(fileread(file)),dataToWrite) end end end
TextFileTest
クラスを実行します。この例では、アサーションにパスし、テストが最後まで実行されます。
runtests("TextFileTest")
Running TextFileTest . Done TextFileTest __________
ans = TestResult with properties: Name: 'TextFileTest/testWithTemporaryFolder' Passed: 1 Failed: 0 Incomplete: 0 Duration: 0.0467 Details: [1×1 struct] Totals: 1 Passed, 0 Failed, 0 Incomplete. 0.046653 seconds testing time.
詳細
診断
テスト フレームワークでは、テスト ランナーの構成に応じて検定にパスしたときか失敗したときに診断を表示する場合があります。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin
インスタンスを使用できます。
診断メッセージをテスト ケースに追加するには、いずれかの検定メソッドでオプションの diagnostic
引数を使用します。diagnostic
を string 配列、文字配列、関数ハンドル、または matlab.automation.diagnostics.Diagnostic
オブジェクトの配列として指定できます。
例外安全
テストの内容により、その環境の状態が変更されることがあります。例外が存在している場合でも環境を元の状態に復元できる場合、内容は "例外安全" です。例外安全により、例外をスローしたテストが環境を破損して後続のテストに影響を与えないことが確保されます。例外安全を実現するには、addTeardown
メソッドを使用してすべての破棄アクションを実行します。元の状態変化の直前または直後に、例外をスローする可能性のある他のコードを挟むことなく、addTeardown
を呼び出します。
たとえば、以下のコードは例外安全ではありません。テストが失敗した場合、Figure はテスト フレームワークで閉じられません。この Figure が存在すると、後続のテストが失敗する可能性があります。
% Not exception safe
f = figure;
testCase.assertEqual(actual,expected)
close(f)
これに対して、以下のコードは、テスト結果に関係なくフレームワークで Figure が閉じられるため、例外安全です。
% Exception safe
f = figure;
testCase.addTeardown(@close,f)
testCase.assertEqual(actual,expected)
addTeardown
を使用してフィクスチャを破棄すれば必ずコードが例外安全になるわけではありません。以下のコードは、テストの後に addTeardown
の呼び出しが行われているため、例外安全ではありません。テストが失敗した場合、Figure はフレームワークで閉じられません。
% Not exception safe
f = figure;
testCase.assertEqual(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)