Main Content

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 クラスです。

メソッド

すべて展開する

イベント

イベント名トリガーイベント データイベントの属性
AssertionFailedアサーションの失敗時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

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

NotifyAccess: private

ListenAccess: public

すべて折りたたむ

一時フォルダー内のテキスト ファイルへの書き込みをテストします。ファイルを開けない場合、アサーションを使用してテストを失敗させて書き込みをスキップします。

現在のフォルダー内の TextFileTest.m という名前のファイルで、一時フォルダー内の開いているテキスト ファイルへのデータの書き込みをテストする TextFileTest クラスを作成します。ファイルを書き込み用に開けない場合、アサーションを使用してテストを失敗させて残りのテスト内容をスキップします。

classdef TextFileTest < matlab.unittest.TestCase
    methods (Test)
        function testWithTemporaryFolder(testCase)
            folder = testCase.createTemporaryFolder();
            file = fullfile(folder,"myFile.txt");
            fid = fopen(file,"w");
            testCase.addTeardown(@fclose,fid)
            testCase.assertNotEqual(fid,-1,"IO Problem")
            
            txt = repmat("ab",1,1000);
            dataToWrite = join(txt);
            fprintf(fid,"%s",dataToWrite);
            testCase.verifyEqual(string(fileread(file)),dataToWrite)
        end
    end
end

TextFileTest クラスを実行します。この例では、アサーションにパスし、テストが最後まで実行されます。

runtests("TextFileTest")
Running TextFileTest
.
Done TextFileTest
__________
ans = 
  TestResult with properties:

          Name: 'TextFileTest/testWithTemporaryFolder'
        Passed: 1
        Failed: 0
    Incomplete: 0
      Duration: 0.0467
       Details: [1×1 struct]

Totals:
   1 Passed, 0 Failed, 0 Incomplete.
   0.046653 seconds testing time.

詳細

すべて展開する

バージョン履歴

R2013a で導入