Main Content

matlab.unittest.qualifications.Assumable クラス

パッケージ: matlab.unittest.qualifications

テストの内容をフィルター処理する検定

説明

Assumable クラスは、テストの内容をフィルター処理する検定を提供します。エラーの発生時に実行されるアクションを除いて、Assumable クラスは matlab.unittest.qualifications パッケージにある他の検定クラスと同様に機能します。

仮定エラーが発生すると、Assumable クラスは AssumptionFailedException オブジェクトをスローしてテスト フレームワークにエラーを通知します。フレームワークは、ここで現在のテスト内容をフィルター処理済みとマークし、テストを続行します。仮定により、特定の前提条件が満たされている場合にのみ確実にテストが実行されますが、前提条件を満たさずにテストを実行してもテスト エラーは生成されません。満たされていない前提条件によりテスト エラーを発生させる場合は、仮定の代わりにアサーションを使用してください。

TestCase クラスのメソッド内で仮定エラーが生成された場合、メソッドのタイプによってどのテストがフィルター処理されるか決まります。

  • Test メソッド — フレームワークによって Test メソッド全体がフィルター処理済みとマークされます。

  • TestMethodSetup メソッドまたは TestMethodTeardown メソッド — フレームワークによって、このメソッド インスタンスに実行する Test メソッドがフィルター処理済みとマークされます。

  • TestClassSetup メソッドまたは TestClassTeardown メソッド — フレームワークによって、テスト クラス全体がフィルター処理済みとマークされます。

仮定を使用する場合、テスト内容が例外安全であることを確認してください。仮定はテスト エラーを生成しないため、テスト コードの一部が警告なしでフィルター処理される場合があります。デッド テスト コードの生成を回避するには、フィルター処理されたテストの監視を検討してください。

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

メソッド

すべて展開する

イベント

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

NotifyAccess: private

ListenAccess: public

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

NotifyAccess: private

ListenAccess: public

すべて折りたたむ

仮定を使用して、Linux® プラットフォーム上でのみテストが実行できることを確認します。MATLAB が Microsoft® Windows® または macOS プラットフォームにインストールされている場合、テストをフィルター処理するようにテスト フレームワークに指示します。

現在のフォルダー内のファイルに、LinuxTests クラスを作成します。プラットフォームをテストするために、TestClassSetup methods ブロックに testPlatform メソッドを定義します。このメソッドは assumeTrue メソッドの呼び出しを使用して、MATLAB が Linux プラットフォームにインストールされていることをテストします。仮定が失敗した場合、フレームワークによってテスト クラス全体がフィルター処理されます。

classdef LinuxTests < matlab.unittest.TestCase
    methods (TestClassSetup)
        function testPlatform(testCase)
            testCase.assumeTrue(isunix && ~ismac, ...
                "Tests must run on a Linux platform.")
        end
    end
end

Test 属性を指定して methods ブロック内にテストを定義します。この例のテストは説明のみを目的としています。

classdef LinuxTests < matlab.unittest.TestCase
    methods (TestClassSetup)
        function testPlatform(testCase)
            testCase.assumeTrue(isunix && ~ismac, ...
                "Tests must run on a Linux platform.")
        end
    end

    methods (Test)
        function test1(testCase)
            testCase.verifyWarningFree(@rand)
        end
        function test2(testCase)
            testCase.verifyWarningFree(@() size([]))
        end
    end
end

Windows マシン上でテストを実行します。仮定がクラスセットアップ レベルで失敗するため、LinuxTests クラスが定義するテストをフレームワークはフィルター処理します。

runtests("LinuxTests")
Running LinuxTests

================================================================================
All tests in LinuxTests were filtered.
    Test Diagnostic: Tests must run on a Linux platform.
Details
================================================================================

Done LinuxTests
__________

Failure Summary:

     Name              Failed  Incomplete  Reason(s)
    ===============================================================
     LinuxTests/test1              X       Filtered by assumption.
    ---------------------------------------------------------------
     LinuxTests/test2              X       Filtered by assumption.
ans = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

詳細

すべて展開する

バージョン履歴

R2013a で導入