このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
matlab.unittest.qualifications.Assumable クラス
名前空間: matlab.unittest.qualifications
テストの内容をフィルター処理する検定
説明
Assumable
クラスは、テストの内容をフィルター処理する検定を提供します。エラーの発生時に実行されるアクションを除いて、Assumable
クラスは matlab.unittest.qualifications
パッケージにある他の検定クラスと同様に機能します。
仮定エラーが発生すると、Assumable
クラスは AssumptionFailedException
オブジェクトをスローしてテスト フレームワークにエラーを通知します。フレームワークは、ここで現在のテスト内容をフィルター処理済みとマークし、テストを続行します。仮定により、特定の前提条件が満たされている場合にのみ確実にテストが実行されますが、前提条件を満たさずにテストを実行してもテスト エラーは生成されません。満たされていない前提条件によりテスト エラーを発生させる場合は、仮定の代わりにアサーションを使用してください。
TestCase
クラスのメソッド内で仮定エラーが生成された場合、メソッドのタイプによってどのテストがフィルター処理されるか決まります。
Test
メソッド — フレームワークによってTest
メソッド全体がフィルター処理済みとマークされます。TestMethodSetup
メソッドまたはTestMethodTeardown
メソッド — フレームワークによって、このメソッド インスタンスに実行するTest
メソッドがフィルター処理済みとマークされます。TestClassSetup
メソッドまたはTestClassTeardown
メソッド — フレームワークによって、テスト クラス全体がフィルター処理済みとマークされます。
仮定を使用する場合、テスト内容が例外安全であることを確認してください。仮定はテスト エラーを生成しないため、テスト コードの一部が警告なしでフィルター処理される場合があります。デッド テスト コードの生成を回避するには、フィルター処理されたテストの監視を検討してください。
matlab.unittest.qualifications.Assumable
クラスは handle
クラスです。
メソッド
パブリック メソッド
Assumable
クラスは、値をテストしてエラーに対応するための複数の検定メソッドを提供します。たとえば、assumeEmpty
は値が空であることをテストし、assumeTrue
は実績値が true であることをテストします。
メモ
Assumable
クラスのメソッドは、Verifiable
クラスのメソッドに対応します。検定タイプのみが異なります。Assumable
メソッドは、Verifiable
メソッドと同じ方法で呼び出しが可能です。
assumeEqual |
入力引数
名前と値の引数
|
assumeFail |
無条件の仮定エラーが生成されます。 入力引数
|
assumeFalse |
入力引数
|
assumeNotEqual |
入力引数
|
assumeNotSameHandle |
入力引数
|
assumeReturnsTrue |
入力引数
|
assumeSameHandle |
入力引数
|
assumeThat |
入力引数
|
assumeTrue |
入力引数
|
assumeError |
入力引数
出力引数
|
assumeWarning |
入力引数
出力引数
|
assumeWarningFree |
入力引数
出力引数
|
assumeGreaterThan |
入力引数
|
assumeGreaterThanOrEqual |
入力引数
|
assumeLessThan |
入力引数
|
assumeLessThanOrEqual |
入力引数
|
assumeEmpty |
入力引数
|
assumeLength |
入力引数
|
assumeNotEmpty |
入力引数
|
assumeNumElements |
入力引数
|
assumeSize |
入力引数
|
assumeClass |
入力引数
|
assumeInstanceOf |
入力引数
|
assumeMatches |
入力引数
|
assumeSubstring |
入力引数
|
イベント
イベント名 | トリガー | イベント データ | イベントの属性 |
---|---|---|---|
AssumptionFailed | 仮定の失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
AssumptionPassed | 仮定の成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
例
Linux プラットフォーム上のみでのテストの実行
仮定を使用して、Linux® プラットフォーム上でのみテストが実行できることを確認します。MATLAB が Microsoft® Windows® または macOS プラットフォームにインストールされている場合、テストをフィルター処理するようにテスト フレームワークに指示します。
現在のフォルダー内のファイルに、LinuxTests
クラスを作成します。プラットフォームをテストするために、TestClassSetup
methods
ブロックに testPlatform
メソッドを定義します。このメソッドは assumeTrue
メソッドの呼び出しを使用して、MATLAB が Linux プラットフォームにインストールされていることをテストします。仮定が失敗した場合、フレームワークによってテスト クラス全体がフィルター処理されます。
classdef LinuxTests < matlab.unittest.TestCase methods (TestClassSetup) function testPlatform(testCase) testCase.assumeTrue(isunix && ~ismac, ... "Tests must run on a Linux platform.") end end end
Test
属性を指定して methods
ブロック内にテストを定義します。この例のテストは説明のみを目的としています。
classdef LinuxTests < matlab.unittest.TestCase methods (TestClassSetup) function testPlatform(testCase) testCase.assumeTrue(isunix && ~ismac, ... "Tests must run on a Linux platform.") end end methods (Test) function test1(testCase) testCase.verifyWarningFree(@rand) end function test2(testCase) testCase.verifyWarningFree(@() size([])) end end end
Windows マシン上でテストを実行します。仮定がクラスセットアップ レベルで失敗するため、LinuxTests
クラスが定義するテストをフレームワークはフィルター処理します。
runtests("LinuxTests")
Running LinuxTests ================================================================================ All tests in LinuxTests were filtered. Test Diagnostic: Tests must run on a Linux platform. Details ================================================================================ Done LinuxTests __________ Failure Summary: Name Failed Incomplete Reason(s) =============================================================== LinuxTests/test1 X Filtered by assumption. --------------------------------------------------------------- LinuxTests/test2 X Filtered by assumption.
ans = 1×2 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 0 Passed, 0 Failed, 2 Incomplete. 0.27782 seconds testing time.
詳細
診断
テスト フレームワークでは、テスト ランナーの構成に応じて検定にパスしたときか失敗したときに診断を表示する場合があります。既定では、フレームワークは検定に失敗したときにのみ診断を表示します。この既定の動作はテスト ランナーをカスタマイズしてオーバーライドできます。たとえば、失敗したイベントとパスしたイベントの両方の診断を表示するには、DiagnosticsOutputPlugin
インスタンスを使用できます。
診断メッセージをテスト ケースに追加するには、いずれかの検定メソッドでオプションの diagnostic
引数を使用します。diagnostic
を string 配列、文字配列、関数ハンドル、または matlab.automation.diagnostics.Diagnostic
オブジェクトの配列として指定できます。
例外安全
テストの内容により、その環境の状態が変更されることがあります。例外が存在している場合でも環境を元の状態に復元できる場合、内容は "例外安全" です。例外安全により、例外をスローしたテストが環境を破損して後続のテストに影響を与えないことが確保されます。例外安全を実現するには、addTeardown
メソッドを使用してすべての破棄アクションを実行します。元の状態変化の直前または直後に、例外をスローする可能性のある他のコードを挟むことなく、addTeardown
を呼び出します。
たとえば、以下のコードは例外安全ではありません。テストが失敗した場合、Figure はテスト フレームワークで閉じられません。この Figure が存在すると、後続のテストが失敗する可能性があります。
% Not exception safe
f = figure;
testCase.assumeEqual(actual,expected)
close(f)
これに対して、以下のコードは、テスト結果に関係なくフレームワークで Figure が閉じられるため、例外安全です。
% Exception safe
f = figure;
testCase.addTeardown(@close,f)
testCase.assumeEqual(actual,expected)
addTeardown
を使用してフィクスチャを破棄すれば必ずコードが例外安全になるわけではありません。以下のコードは、テストの後に addTeardown
の呼び出しが行われているため、例外安全ではありません。テストが失敗した場合、Figure はフレームワークで閉じられません。
% Not exception safe
f = figure;
testCase.assumeEqual(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)