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 |
|
例
テストの前提条件の検証
DocPolynom
オブジェクトの乗算をテストするには、まず examples
フォルダーを検索パスに追加し、DocPolynom
クラスがテストに使用できることを検証します。DocPolynom
クラスの詳細については、クラスによる多項式の表現を参照してください。
現在のフォルダー内のファイルに、DocPolynomMultiplicationTest
クラスを作成します。このクラスが DocPolynom
オブジェクトの乗算をテストします。テストの DocPolynom
にアクセスするために、TestClassSetup
methods
ブロックに addDocPolynomClassToPath
メソッドを定義します。メソッド内の PathFixture
インスタンスを使用して、DocPolynom
クラス定義ファイルを含む examples
フォルダーをパスに追加します。次にアサーションを使用して、テストに使用できる DocPolynom
をフィクスチャが作成したことを検証します。アサーションが失敗した場合、フレームワークは Test
メソッドを実行しようせずに失敗させます。それ以外の場合、Test
メソッドが実行されます。最後にフィクスチャが破棄されて、パスが前の状態に戻されます。
classdef DocPolynomMultiplicationTest < matlab.unittest.TestCase properties TextToDisplay = "Equation under test: " end methods (TestClassSetup) function addDocPolynomClassToPath(testCase) import matlab.unittest.fixtures.PathFixture folder = fullfile(matlabroot, ... "help","techdoc","matlab_oop","examples"); testCase.applyFixture(PathFixture(folder)) testCase.assertNotEmpty(?DocPolynom) end end end
次に、Test
属性をもつ methods
ブロックにテストを追加します。
classdef DocPolynomMultiplicationTest < matlab.unittest.TestCase properties TextToDisplay = "Equation under test: " end methods (TestClassSetup) function addDocPolynomClassToPath(testCase) import matlab.unittest.fixtures.PathFixture folder = fullfile(matlabroot, ... "help","techdoc","matlab_oop","examples"); testCase.applyFixture(PathFixture(folder)) testCase.assertNotEmpty(?DocPolynom) end end methods (Test) function test1(testCase) p1 = DocPolynom([1 0 3]); p2 = DocPolynom([5 2]); actual = p1 * p2; expected = DocPolynom([5 2 15 6]); diagnostic = [testCase.TextToDisplay ... "(x^2 + 3) * (5*x + 2) = 5*x^3 + 2*x^2 + 15*x + 6"]; testCase.verifyEqual(actual,expected,diagnostic) end function test2(testCase) p1 = DocPolynom([1 4]); p2 = DocPolynom([2 3]); p3 = DocPolynom([1 0 -1]); actual = p1 * p2 * p3; expected = DocPolynom([2 11 10 -11 -12]); diagnostic = [testCase.TextToDisplay ... "(x + 4) * (2*x + 3) * (x^2 - 1) = 2*x^4 + 11*x^3 + 10*x^2 - 11*x - 12"]; testCase.verifyEqual(actual,expected,diagnostic) end end end
DocPolynomMultiplicationTest
クラスのテストを実行します。この例では、両方のテストにパスします。
runtests("DocPolynomMultiplicationTest")
Running DocPolynomMultiplicationTest .. Done DocPolynomMultiplicationTest __________
ans = 1×2 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 2 Passed, 0 Failed, 0 Incomplete. 0.38698 seconds testing time.
詳細
診断
テスト フレームワークでは、テスト ランナーの構成に応じて検定にパスしたときか失敗したときに診断を表示する場合があります。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin
インスタンスを使用できます。
診断メッセージをテスト ケースに追加するには、いずれかの検定メソッドでオプションの diagnostic
引数を使用します。diagnostic
を string 配列、文字配列、関数ハンドル、または matlab.unittest.diagnostics.Diagnostic
オブジェクトの配列として指定できます。
例外安全
エラーの発生時にすべてのフィクスチャの破棄が TestCase
クラスまたは Fixture
クラスの addTeardown
メソッドで実行される場合、あるいはオブジェクトのデストラクターを使用して実行される場合、テストの内容は "例外安全" となります。例外安全により、例外がスローされた場合でも、テストのエラーが後続のテストに影響を与えないことが確保されます。
たとえば、以下のコードは例外安全ではありません。テストが失敗した場合、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)