Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

matlab.unittest.qualifications.Assertable クラス

パッケージ: matlab.unittest.qualifications

テストの前提条件を検証する検定

説明

Assertable クラスは、テストの前提条件を検証する検定を提供します。エラーの発生時に実行されるアクションを除いて、Assertable クラスは他の matlab.unittest 検定と同様に機能します。

アサーション エラーが発生すると、Assertable クラスは AssertionFailedException をスローしてテスト フレームワークにエラーを通知します。このクラスは、アサーションの地点でのエラーにより現在のテスト メソッドの残りが無効になるものの、他のテスト メソッドの適切な実行は妨げられない場合に最も役立ちます。アサーションは多くの場合、現在のテストの前提条件に違反しないようにするためや、フィクスチャが正しくセットアップされるようにするために使用します。テスト内容が例外セーフ であることを確認してください。フィクスチャの破棄を例外セーフにできない場合や、エラーの発生後に回復できない場合は、代わりに致命的なアサーションを使用します。

アサーションを使用すると、テストで前提条件に違反しており、すべてのフィクスチャの状態が回復可能な場合に、残りのテスト メソッドでカバレッジを受け取ることができます。アサーションはまた、前提条件エラーのために失敗する後続の検証を実行しないことで、エラーのノイズ レベルを低減します。ただし、エラーの発生時には、失敗したテスト メソッドのすべての内容はテスト実行フレームワークにより不完全としてマークされます。そのため、エラーがテストの前提条件に影響を与えたり、フィクスチャのセットアップまたは破棄の問題の原因となったりしない場合は、検証を使用してください。そうすることで、すべてのテスト内容が実行されたエラーの詳細情報が提供されます。

メソッド

assertClass指定した値の正確なクラスをアサートする
assertEmpty値が空であることをアサートする
assertEqual値が指定値と等しいことをアサートする
assertError関数が指定された例外をスローすることをアサートする
assertFail無条件のアサーション エラーの生成
assertFalse値が false であることをアサートする
assertGreaterThan値が指定値より大きいことをアサートする
assertGreaterThanOrEqual値が指定値以上であることをアサートする
assertInstanceOf値が指定したタイプのオブジェクトであることをアサートする
assertLength値が指定された長さであることをアサートする
assertLessThan値が指定値より小さいことをアサートする
assertLessThanOrEqual値が指定値以下であることをアサートする
assertMatches文字列が指定された正規表現と一致することをアサートする
assertNotEmpty値が空でないことをアサートする
assertNotEqual値が指定値と等しくないことをアサートする
assertNotSameHandle値が指定されたインスタンスに対するハンドルでないことをアサートする
assertNumElements値が指定された要素数をもつことをアサートする
assertReturnsTrue評価時に関数が true を返すことをアサートする
assertSameHandle2 つの値が同じインスタンスに対するハンドルであることをアサートする
assertSize値が指定されたサイズであることをアサートする
assertSubstring文字列に指定文字列が含まれていることをアサートする
assertThat値が指定された制約を満たすことをアサートする
assertTrue値が true であることをアサートする
assertWarning関数が指定された警告を表示することをアサートする
assertWarningFree関数が警告を表示しないことをアサートする

イベント

AssertionFailed

アサーションの失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。

AssertionPassed

アサーションの成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。

コピーのセマンティクス

ハンドル。コピー操作に対するハンドル クラスの影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

アサート可能な検定を使用して前提条件をテストします。この例では、多項式を MAT ファイルに書き込むテスト ケースを作成します。

DocPolynomSaveLoadTest テスト ケースを作成します。この例の後続の手順の以下の DocPolynomSaveLoadTest テスト ケースを参照してください。このステップでは、関数 testSaveLoad の特定のコードに注目します。コード ステートメントは、クラス定義ファイルの内容の外側で実行するようには設計されていません。

 DocPolynomSaveLoadTest クラス定義ファイル

「DocPolynomSaveLoadTest テスト ケースの実行」の MATLAB® コマンドを実行するには、DocPolynomSaveLoadTest.m ファイルを MATLAB パス上にあるフォルダーに追加します。

関数 testSaveLoad は、以下の段階で構成されます。

  • 段階 1: セットアップ — 前提条件のコードを作成および検証します。

  • 段階 2: 実行 — DocPolynom オブジェクトを作成し、それを MAT ファイルに保存します。

  • 段階 3: 検証 — オブジェクトが正常に保存されているかテストします。

  • 段階 4: 破棄 — 破棄コードを実行します。

段階 1 の前提条件を定義します。このテストでは、DocPolynom オブジェクトの作成に一時フォルダーを使用します。このテストを続行するための前提条件は、次のコマンドが正常に実行されることです。

tempFolder = tempname; 
[success, message] = mkdir(tempFolder); 

関数 mkdir の結果をテストします。assertTrue メソッドを使用して、mkdir の引数 success でエラーをテストします。アサーションが発生すると、testSaveLoad テスト メソッドの残りは無効になり、テストは Incomplete とマークされます。

testCase.assertTrue(success, ... 
    Diagnostic.join('Could not create the temporary folder.', ... 
        message)) 

関数 mkdir が失敗すると、MATLAB は Could not create the temporary folder という診断メッセージを表示します。mkdirmessage 引数の内容も同じになります。

破棄フィクスチャ コードを追加します。一時フォルダーを作成することがセットアップ コードになります。これは、対応する関数 rmdir の呼び出しで、MATLAB を元の状態に回復することが必要になります。addTeardown メソッドを使用して、テスト メソッドの途中で例外がスローされても破棄コードが必ず実行されるようにします。こうすることでテストが例外セーフになります。

testCase.addTeardown(@() testCase.cleanUpTemporaryFolder(tempFolder)) 

補助関数に破棄コードを配置します。addTeardown ステートメントは、mkdir セットアップ ステートメントと同じコード ブロックに配置されますが、cleanUpTemporaryFolder コードはテスト メソッドの段階 4 で実行されます。

DocPolynomSaveLoadTest テスト ケースでは、補助関数 cleanUpTemporaryFolder が関数 rmdir を実行します。

有効な MAT ファイルを作成するための前提条件を定義します。DocPolynom オブジェクトの保存および読み込みが正しく行われたことを検証するための前提条件は、MAT ファイル DocPolynomFile.mat が正常に作成されていることです。Phase 2: Exercise ブロックの次のコードで、この条件をテストします。アサーションが発生すると、testSaveLoad テスト メソッドの残りは無効になり、テストは Failed および Incomplete とマークされます。

 testCase.assertEqual(exist('DocPolynomFile.mat','file'), 2, ... 
     Diagnostic.join('The mat file was not saved correctly.', ...
     @() dir(pwd)))

ファイルが作成されていないと、MATLAB はThe mat file was not saved correctly という診断メッセージを表示します。一時フォルダーの内容も同じになります。

DocPolynomSaveLoadTest テスト ケースを実行します。

tc = DocPolynomSaveLoadTest;
run(tc);
Running DocPolynomSaveLoadTest
.
Done DocPolynomSaveLoadTest
__________

詳細

すべて展開する

R2013a で導入