Main Content

matlab.unittest.qualifications.Verifiable クラス

パッケージ: matlab.unittest.qualifications

ソフトエラー条件を生成する検定

説明

Verifiable クラスは、ソフトエラー条件を生成する検定を提供します。エラーの発生時に実行されるアクションを除いて、Verifiable クラスは matlab.unittest.qualifications パッケージにある他の検定クラスと同様に機能します。

検証が失敗すると、Verifiable クラスは、エラーに関連付けられた診断情報をすべて含めて、テスト フレームワークにエラーを通知します。ただし、現在実行中のテストは、例外をスローすることなく続行されます。この動作は、検証地点のエラーが残りのテスト内容に致命的とならない場合に最も役立ちます。検証は多くの場合、"4 フェーズ テスト" 内の主要な検定タイプとして使用します。前提条件の違反や不適切なテスト セットアップをテストするには、仮定、アサーション、および致命的なアサーションなどの他の検定タイプを使用します。

検証では例外がスローされないため、すべてのテスト内容はテストが失敗しても最後まで実行されます。このため、ソフトウェアの部分がテスト スイートの要件をどれほど満たしているかを把握することができます。例外をスローする検定タイプでは、例外がスローされると未到達のコードや未実行のコードが不定量残るため、このような洞察はできません。検証はまた、エラー条件においてより広いテスト カバレッジを提供します。ただし、検証を使用しすぎると、1 つのエラーで過剰なノイズが発生することがあります。あるエラーにより後続の検定地点でもエラーが発生する場合は、代わりにアサーションまたは致命的なアサーションを使用してください。

matlab.unittest.qualifications.Verifiable クラスは handle クラスです。

メソッド

すべて展開する

イベント

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

NotifyAccess: private

ListenAccess: public

VerificationPassed検証の成功時にトリガーされます。QualificationEventData オブジェクトがリスナー コールバック関数に渡されます。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

すべて折りたたむ

検証を使用して DocPolynom クラスをテストします。これは MATLAB® で多項式を表します。クラスの詳細については、クラスによる多項式の表現を参照してください。

現在のフォルダー内のファイルに、DocPolynom クラスの異なるメソッドをテストする DocPolynomTest クラスを作成します。テストの DocPolynom にアクセスするために、TestClassSetup methods ブロックに addDocPolynomClassToPath メソッドを定義します。このメソッドは PathFixture インスタンスを使用して、DocPolynom クラス定義ファイルを含む examples フォルダーを検索パスに追加します。テストが最後まで実行されると、テスト フレームワークはフィクスチャを破棄して、パスを前の状態に戻します。

classdef DocPolynomTest < 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))
        end
    end
end

次に、Test 属性をもつ methods ブロックにテストを追加します。DocPolynom クラスをテストするには、以下の 3 つの Test メソッド内で検証を使用します。

  • testConstructor メソッド — verifyClass を使用して、DocPolynom クラス コンストラクターをテストします。

  • testAddition メソッド — verifyEqual を使用して、DocPolynom オブジェクトの加算をテストします。

  • testMultiplication メソッド — verifyEqual を使用して、DocPolynom オブジェクトの乗算をテストします。

classdef DocPolynomTest < 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))
        end
    end

    methods (Test)
        function testConstructor(testCase)
            p = DocPolynom([1 0 1]);
            testCase.verifyClass(p,?DocPolynom)
        end

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

        function testMultiplication(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
    end
end

DocPolynomTest クラスのテストを実行します。この例では、すべてのテストがパスします。

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

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   3 Passed, 0 Failed, 0 Incomplete.
   0.16695 seconds testing time.

バージョン履歴

R2013a で導入