このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
matlab.unittest.constraints.Throws クラス
名前空間: matlab.unittest.constraints
スーパークラス: matlab.unittest.constraints.Constraint
関数が指定したエラーをスローするかどうかをテストする
説明
matlab.unittest.constraints.Throws
クラスは、関数ハンドルが指定したエラーをスローするかどうかをテストする制約を提供します。
matlab.unittest.constraints.Throws
クラスは handle
クラスです。
作成
説明
c = matlab.unittest.constraints.Throws(
は、関数ハンドルが identifier
)identifier
で指定したエラーをスローするかどうかをテストする制約を作成します。実際の値が、テスト フレームワークによって呼び出されたときに指定したエラーをスローする関数ハンドルであった場合に、制約は満たされます。
c = matlab.unittest.constraints.Throws(
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、identifier
,Name,Value
)c = matlab.unittest.constraints.Throws(identifier,"WhenNargoutIs",2)
は、関数ハンドルが 2 つの出力引数を指定して呼び出されたときに指定したエラーをスローするかどうかをテストする制約を作成します。
入力引数
identifier
— エラー識別子
string スカラー | 文字ベクトル | meta.class
インスタンス
エラー識別子。string スカラー、文字ベクトル、または meta.class
インスタンスとして指定します。
identifier
が meta.class
インスタンスである場合、スローされたエラーが指定したクラスのインスタンスまたはそのサブクラスのインスタンスであれば、制約は満たされます。
この引数は ExpectedException
プロパティを設定します。
例: "MATLAB:UndefinedFunction"
例: ?MException
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
例: c = matlab.unittest.constraints.Throws(identifier,WhenNargoutIs=2)
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: c = matlab.unittest.constraints.Throws(identifier,"WhenNargoutIs",2)
WhenNargoutIs
— 出力数
0 (既定値) | 非負の整数スカラー
関数ハンドルを呼び出すときに制約が要求する出力数。非負の整数スカラーとして指定します。
この引数は Nargout
プロパティを設定します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
CausedBy
— エラーの必要な原因
string 配列 | 文字ベクトルの cell 配列 | meta.class
インスタンスの配列
期待されるエラーの必要な原因。string 配列、文字ベクトルの cell 配列、または meta.class
インスタンスの配列として指定します。関数ハンドルがエラーをスローしたときに、指定した原因のいずれかがない場合、制約は満たされません。
この引数は RequiredCauses
プロパティを設定します。
RespectingSet
— 必要な原因の集合を考慮に入れるかどうか
false
または 0
(既定値) | true
または 1
必要な原因の集合を考慮に入れるかどうか。数値または logical 0
(false
) または 1
(true
) として指定します。値が true
の場合、期待されるエラーに名前と値の引数 CausedBy
で指定されていない原因が含まれているとき、制約は満たされません。既定では、制約は追加の原因を考慮しません。
この引数は RespectSet
プロパティを設定します。
プロパティ
ExpectedException
— 期待されるエラーの識別子
文字ベクトル | meta.class
インスタンス
期待されるエラーの識別子。文字ベクトルまたは meta.class
インスタンスとして返されます。
このプロパティは入力引数 identifier
によって設定されます。
属性:
GetAccess | public |
SetAccess | immutable |
Nargout
— 出力数
0 (既定値) | 非負の整数スカラー
関数ハンドルを呼び出すときに制約が要求した出力数。非負の整数スカラーとして返されます。
このプロパティは名前と値の引数 WhenNargoutIs
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
RequiredCauses
— エラーの必要な原因
文字ベクトルの cell 配列 | meta.class
インスタンスの配列
期待されるエラーの必要な原因。文字ベクトルの cell 配列または meta.class
インスタンスの配列として返されます。
このプロパティは名前と値の引数 CausedBy
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
RespectSet
— 必要な原因の集合を考慮に入れるかどうか
0
(既定値) | 1
必要な原因の集合を考慮に入れるかどうか。データ型 logical
の 0
または 1
として返されます。
このプロパティは名前と値の引数 RespectingSet
によって設定されます。
属性:
GetAccess | public |
SetAccess | private |
例
指定されたエラーのテスト
実際の値が、指定されたエラーをスローする関数ハンドルであるかどうかをテストします。
最初に、この例で使用するクラスをインポートします。
import matlab.unittest.TestCase import matlab.unittest.constraints.Throws
対話型テスト用にテスト ケースを作成します。
testCase = TestCase.forInteractiveUse;
関数 error
が、期待される識別子のエラーをスローすることを検証します。
testCase.verifyThat(@() error("SOME:error:id","Error!"), ... Throws("SOME:error:id"))
Verification passed.
string の代わりに meta.class
インスタンスを制約に渡して、もう一度テストします。テストはパスします。
testCase.verifyThat(@() error("SOME:error:id","Error!"), ... Throws(?MException))
Verification passed.
実際のエラーの識別子と期待されるエラーの識別子が一致しない場合にテストが失敗することを検証します。
testCase.verifyThat(@() error("SOME:error:id","Error!"), ... Throws("OTHER:error:id"))
Verification failed. --------------------- Framework Diagnostic: --------------------- Throws failed. --> The function threw the wrong exception. Actual Exception: 'SOME:error:id' Expected Exception: 'OTHER:error:id' --> Actual Error Report: Error using @()error("SOME:error:id","Error!") Error! Evaluated Function: function_handle with value: @()error("SOME:error:id","Error!")
関数 rand
をテストします。rand
はエラーをスローしないため、テストは失敗します。
testCase.verifyThat(@rand,Throws(?MException))
Verification failed. --------------------- Framework Diagnostic: --------------------- Throws failed. --> The function did not throw any exception. Expected Exception: ?MException Evaluated Function: function_handle with value: @rand
関数 disp
は出力を返しません。1 つの出力引数を指定して disp
を呼び出した場合に指定されたエラーがスローされることを検証します。
testCase.verifyThat(@() disp("Hello World!"), ... Throws("MATLAB:maxlhs","WhenNargoutIs",1))
Verification passed.
実際の値が関数ハンドルでない場合、Throws
制約が満たされないことを検証します。
testCase.verifyThat(5,Throws("SOME:error:id"))
Verification failed. --------------------- Framework Diagnostic: --------------------- Throws failed. --> The value must be an instance of the expected type. Actual Class: double Expected Type: function_handle Actual Value: 5
エラーの原因のテスト
Throws
制約を使用して、エラーの原因についてテストします。
最初に、この例で使用するクラスをインポートします。
import matlab.unittest.TestCase import matlab.unittest.constraints.Throws
対話型テスト用にテスト ケースを作成します。
testCase = TestCase.forInteractiveUse;
2 つのエラー原因 cause1
と cause2
をもつ MException
オブジェクト me
を作成します。
me = MException("TOP:id","Top-Level Error!"); cause1 = MException("CAUSE1:id1","First Cause of Error!"); cause2 = MException("CAUSE2:id2","Second Cause of Error!"); me = me.addCause(cause1); me = me.addCause(cause2);
フレームワークで me
がスローされたときにその原因が cause1
であることを検証します。
testCase.verifyThat(@() me.throw,Throws("TOP:id","CausedBy","CAUSE1:id1"))
Verification passed.
原因を meta.class
インスタンスとして指定して、もう一度テストします。テストはパスします。me
に原因がない場合は、テストは失敗します。
testCase.verifyThat(@() me.throw,Throws("TOP:id","CausedBy",?MException))
Verification passed.
エラーに cause1
以外の原因がないかどうかをテストします。テストは、cause2
も期待されるエラーの原因であるために失敗します。
testCase.verifyThat(@() me.throw, ... Throws("TOP:id","CausedBy","CAUSE1:id1","RespectingSet",true))
Verification failed. --------------------- Framework Diagnostic: --------------------- Throws failed. --> The following causes were unexpectedly found in the exception tree: --> 'CAUSE2:id2' --> Actual Error Report: Error using @()me.throw Top Level Error! Caused by: First Cause of Error! Second Cause of Error! Actual Error Structure: ?MException 'TOP:id' --> ?MException 'CAUSE1:id1' --> ?MException 'CAUSE2:id2' Evaluated Function: function_handle with value: @()me.throw
指定した原因がエラーに属していない場合に、制約が満たされないことを検証します。
testCase.verifyThat(@() error("TOP:id","Top-Level Error!"), ... Throws("TOP:id","CausedBy","CAUSE1:id1"))
Verification failed. --------------------- Framework Diagnostic: --------------------- Throws failed. --> The following causes were not found in the exception tree: --> 'CAUSE1:id1' --> Actual Error Report: Error using @()error("TOP:id","Top-Level Error!") Top-Level Error! Actual Error Structure: ?MException 'TOP:id' Evaluated Function: function_handle with value: @()error("TOP:id","Top-Level Error!")
バージョン履歴
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)