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

すべて折りたたむ

DocPolynom オブジェクトの乗算をテストするには、まず examples フォルダーを検索パスに追加し、DocPolynom クラスがテストに使用できることを検証します。DocPolynom クラスの詳細については、クラスによる多項式の表現を参照してください。

現在のフォルダー内のファイルに、DocPolynomMultiplicationTest クラスを作成します。このクラスが DocPolynom オブジェクトの乗算をテストします。テストの DocPolynom にアクセスするために、TestClassSetup methods ブロックに addDocPolynomClassToPath メソッドを定義します。メソッド内の PathFixture インスタンスを使用して、DocPolynom クラス定義ファイルを含む examples フォルダーをパスに追加します。次にアサーションを使用して、テストに使用できる DocPolynom をフィクスチャが作成したことを検証します。アサーションが失敗した場合、フレームワークは Test メソッドを実行しようせずに失敗させます。それ以外の場合、Test メソッドが実行されます。最後にフィクスチャが破棄されて、パスが前の状態に戻されます。

classdef DocPolynomMultiplicationTest < matlab.unittest.TestCase
    properties
        TextToDisplay = "Equation under test: "
    end

    methods (TestClassSetup)
        function addDocPolynomClassToPath(testCase)
            import matlab.unittest.fixtures.PathFixture
            folder = fullfile(matlabroot, ...
                "help","techdoc","matlab_oop","examples");
            testCase.applyFixture(PathFixture(folder))
            testCase.assertNotEmpty(?DocPolynom)
        end
    end
end

次に、Test 属性をもつ methods ブロックにテストを追加します。

classdef DocPolynomMultiplicationTest < matlab.unittest.TestCase
    properties
        TextToDisplay = "Equation under test: "
    end

    methods (TestClassSetup)
        function addDocPolynomClassToPath(testCase)
            import matlab.unittest.fixtures.PathFixture
            folder = fullfile(matlabroot, ...
                "help","techdoc","matlab_oop","examples");
            testCase.applyFixture(PathFixture(folder))
            testCase.assertNotEmpty(?DocPolynom)
        end
    end

    methods (Test)
        function test1(testCase)
            p1 = DocPolynom([1 0 3]);
            p2 = DocPolynom([5 2]);
            actual = p1 * p2;
            expected = DocPolynom([5 2 15 6]);
            diagnostic = [testCase.TextToDisplay ...
                "(x^2 + 3) * (5*x + 2) = 5*x^3 + 2*x^2 + 15*x + 6"];
            testCase.verifyEqual(actual,expected,diagnostic)
        end

        function test2(testCase)
            p1 = DocPolynom([1 4]);
            p2 = DocPolynom([2 3]);
            p3 = DocPolynom([1 0 -1]);
            actual = p1 * p2 * p3;
            expected = DocPolynom([2 11 10 -11 -12]);
            diagnostic = [testCase.TextToDisplay ...
                "(x + 4) * (2*x + 3) * (x^2 - 1) = 2*x^4 + 11*x^3 + 10*x^2 - 11*x - 12"];
            testCase.verifyEqual(actual,expected,diagnostic)
        end
    end
end

DocPolynomMultiplicationTest クラスのテストを実行します。この例では、両方のテストにパスします。

runtests("DocPolynomMultiplicationTest")
Running DocPolynomMultiplicationTest
..
Done DocPolynomMultiplicationTest
__________
ans = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.38698 seconds testing time.

詳細

すべて展開する

バージョン履歴

R2013a で導入