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 |
入力引数
|
assumeEqualsBaseline (MATLAB Test™ が必要) |
入力引数
名前と値の引数
|
イベント
| イベント名 | トリガー | イベント データ | イベントの属性 |
|---|---|---|---|
AssumptionFailed | 仮定の失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
AssumptionPassed | 仮定の成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。 | matlab.unittest.qualifications.QualificationEventData |
|
例
仮定を使用して、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 Test ライセンスをお持ちの場合は、assumeEqualsBaseline メソッドを使用して、値がベースライン データと等しいかどうかをテストできます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)