Main Content

isCompatible

クラス: matlab.unittest.fixtures.Fixture
名前空間: matlab.unittest.fixtures

2 つのフィクスチャに互換性があるかどうかを判別

説明

tf = isCompatible(fixture1,fixture2) は、2 つのフィクスチャの互換性をテスト フレームワークにレポートします。フィクスチャに互換性がある場合、メソッドは logical 1 (true) を返します。その他の場合は logical 0 (false) を返します。2 つのフィクスチャのクラスが同じで、環境に対する変更も同じである場合、それらには互換性があります。

構成可能なフィクスチャの場合 (たとえば、そのクラス コンストラクターが入力引数を受け入れる場合)、Fixture サブクラスで isCompatible メソッドを実装します。フレームワークは isCompatible を呼び出して、同じ Fixture サブクラスのインスタンスが同一の共有テスト フィクスチャの状態と対応しているかどうかを判別します。フィクスチャの互換性に関する情報は、フレームワークで破棄アクションやセットアップ アクションを実行するタイミングを決めるのに役立ちます。フレームワークは同じクラスの 2 つのインスタンスでのみ isCompatible メソッドを呼び出すため、フィクスチャのクラスが異なるケースについて処理するコードを実装する必要はありません。

入力引数

すべて展開する

フィクスチャ。matlab.unittest.fixtures.Fixture オブジェクトとして指定します。

属性

Accessprotected

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

数値の出力表示形式を変更する構成可能なフィクスチャを作成します。構成可能なフィクスチャを定義するクラスでは、setup メソッドに加えて isCompatible メソッドを実装しなければなりません。

現在のフォルダー内の NumericFormatFixture.m という名前のファイルで、matlab.unittest.fixtures.Fixture インターフェイスをサブクラス化して NumericFormatFixture クラスを作成します。次の要素をクラスに追加します。

  • Format プロパティ — このプロパティを追加して、フィクスチャの構築時に指定された数値形式を格納します。

  • NumericFormatFixture メソッド — このコンストラクター メソッドを追加して、Format プロパティを設定します。

  • setup メソッド — このメソッドを実装して、フィクスチャによって出力表示形式が指定の数値形式に変更されるようにします。テスト フレームワークでフィクスチャを破棄するときに環境を復元するには、setup メソッド内で addTeardown メソッドを呼び出します。

  • isCompatible メソッド — このメソッドを実装して、NumericFormatFixture インスタンスが共有テスト フィクスチャとして使用される場合に、それらの互換性をテスト フレームワークでテストできるようにします。

classdef NumericFormatFixture < matlab.unittest.fixtures.Fixture
    properties (SetAccess=immutable)
        Format (1,1) string
    end

    methods
        function fixture = NumericFormatFixture(fmt)
            fixture.Format = fmt;
        end

        function setup(fixture)
            originalFormat = format;
            fixture.addTeardown(@format,originalFormat)
            format(fixture.Format)
            fixture.SetupDescription = "Set the numeric format to " + ...
                fixture.Format + ".";
            fixture.TeardownDescription =  ...
                "Restored the numeric format to " + ...
                originalFormat.NumericFormat + ".";
        end
    end

    methods (Access=protected)
        function tf = isCompatible(fixture1,fixture2)
            tf = fixture1.Format == fixture2.Format;
        end
    end
end

現在のフォルダーで、NumericFormatFixture のインスタンスを共有テスト フィクスチャとしてそれぞれ使用する 3 つのテスト クラスを作成します。それぞれのクラスで、数値が共有テスト フィクスチャで適用される形式で表示されるかどうかをテストします。この例では、簡略化するために、関数 formattedDisplayText の呼び出しで実際の値を生成しています。実際には、ユーザー定義のコードをテストします。

TestA.m という名前のファイルに、TestA クラスを作成します。

classdef (SharedTestFixtures={NumericFormatFixture("bank")}) ...
        TestA < matlab.unittest.TestCase
    methods (Test)
        function formatTest(testCase)
            actual = strtrim(formattedDisplayText(pi));
            expected = "3.14";
            testCase.verifyEqual(actual,expected)
        end
    end
end

TestB.m という名前のファイルに、TestB クラスを作成します。

classdef (SharedTestFixtures={NumericFormatFixture("bank")}) ...
        TestB < matlab.unittest.TestCase
    methods (Test)
        function formatTest(testCase)
            actual = strtrim(formattedDisplayText(100/3));
            expected = "33.33";
            testCase.verifyEqual(actual,expected)
        end
    end
end

TestC.m という名前のファイルに、TestC クラスを作成します。

classdef (SharedTestFixtures={NumericFormatFixture("hex")}) ...
        TestC < matlab.unittest.TestCase
    methods (Test)
        function formatTest(testCase)
            actual = strtrim(formattedDisplayText(1));
            expected = "3ff0000000000000";
            testCase.verifyEqual(actual,expected)
        end
    end
end

TestA クラスと TestB クラスには、環境に対して同じ変更を加える共有フィクスチャが割り当てられています。一方、TestC クラスには、別の数値形式を適用するフィクスチャが割り当てられています。この例では、isCompatible メソッドの実装に従って、テスト フレームワークは TestATestB のフィクスチャに互換性があると判定します。一方、TestC のフィクスチャについては、他のフィクスチャと互換性がないと判定されます。

フィクスチャの互換性に関する情報は、フレームワークで破棄アクションやセットアップ アクションを実行するタイミングを決めるのに役立ちます。TestATestB、および TestC を同じテスト スイートの一部として実行する場合、TestA から TestB に切り替えるときは、両方のクラスで必要とされる環境が同じであるため、フレームワークでフィクスチャが破棄されません。一方、TestB から TestC に切り替えるときは、フレームワークで既存のフィクスチャが破棄され、TestC に必要な新しいフィクスチャがセットアップされます。この例では、すべてのテストがパスします。

runtests(["TestA" "TestB" "TestC"]);
Setting up NumericFormatFixture
Done setting up NumericFormatFixture: Set the numeric format to bank.
__________

Running TestA
.
Done TestA
__________

Running TestB
.
Done TestB
__________

Tearing down NumericFormatFixture
Done tearing down NumericFormatFixture: Restored the numeric format to short.
__________

Setting up NumericFormatFixture
Done setting up NumericFormatFixture: Set the numeric format to hex.
__________

Running TestC
.
Done TestC
__________

Tearing down NumericFormatFixture
Done tearing down NumericFormatFixture: Restored the numeric format to short.
__________

バージョン履歴

R2014a で導入