Main Content

matlab.unittest.Test クラス

パッケージ: matlab.unittest
スーパークラス: matlab.unittest.TestSuite

単一のテスト メソッドの仕様

説明

matlab.unittest.Test クラスは、TestRunner オブジェクトが TestCase クラスの単一の Test メソッドを実行するために必要な情報を保持します。スカラー Test インスタンスは、配列 TestSuite に含まれている基本要素です。Test インスタンスの単一配列は、配列 TestSuite の一般的に使われている形式です。

プロパティ

Name

Test 要素の名前。

ProcedureName

Test 要素について実行するテスト プロシージャの名前。クラスベースのテストでは、ProcedureName はテスト メソッドの名前です。関数ベースのテストでは、テストを含むローカル関数の名前です。スクリプトベースのテストでは、テスト セクション タイトルから生成された名前です。Name プロパティとは異なり、ProcedureName には、クラスやパッケージの名前およびパラメーター化に関する情報は含まれません。

TestClass

TestCase のクラスの名前。Test 要素がクラス ベースのテストでない場合、TestClass は空の string です。

BaseFolder

テスト内容を定義するファイルを含むフォルダーの名前。パッケージで定義したテストでは、ベース フォルダーは最上位パッケージ フォルダーの親です。

Parameterization

テストに必要なパラメーターの行ベクトル。Parameterization プロパティには、TestRunner に必要なパラメーター化されたデータがすべて含まれます。

SharedTestFixtures

テストに必要なフィクスチャの行ベクトル。SharedTestFixtures プロパティには、TestCase クラスの SharedTestFixtures クラス レベル属性によって指定されるフィクスチャがすべて含まれます。

Tags

Test 要素に適用するタグの cell 配列。

すべて折りたたむ

現在のフォルダーに、以下のテスト クラスを含む BankAccountTest.m という名前のファイルを作成します。

classdef BankAccountTest < matlab.unittest.TestCase
    
    methods (TestClassSetup)
        function addBankAccountClassToPath(testCase)
            p = path;
            testCase.addTeardown(@path,p);
            addpath(fullfile(matlabroot,'help','techdoc','matlab_oop',...
                'examples'));
        end
    end
    
    methods (Test)
        function testConstructor(testCase)
            b = BankAccount(1234, 100);
            testCase.verifyEqual(b.AccountNumber, 1234, ...
                'Constructor failed to correctly set account number');
            testCase.verifyEqual(b.AccountBalance, 100, ...
                'Constructor failed to correctly set account balance');
        end
        
        function testConstructorNotEnoughInputs(testCase)
            import matlab.unittest.constraints.Throws;
            testCase.verifyThat(@()BankAccount, ...
                Throws('MATLAB:minrhs'));
        end
        
        function testDesposit(testCase)
            b = BankAccount(1234, 100);
            b.deposit(25);
            testCase.verifyEqual(b.AccountBalance, 125);
        end
        
        function testWithdraw(testCase)
            b = BankAccount(1234, 100);
            b.withdraw(25);
            testCase.verifyEqual(b.AccountBalance, 75);
        end
        
        function testNotifyInsufficientFunds(testCase)
            callbackExecuted = false;
            function testCallback(~,~)
                callbackExecuted = true;
            end
            
            b = BankAccount(1234, 100);
            b.addlistener('InsufficientFunds', @testCallback);
            
            b.withdraw(50);
            testCase.assertFalse(callbackExecuted, ...
                'The callback should not have executed yet');
            b.withdraw(60);
            testCase.verifyTrue(callbackExecuted, ...
                'The listener callback should have fired');
        end
    end
end

BankAccountTest クラス内のすべての Test メソッドから一連の Test オブジェクトを作成します。

import matlab.unittest.TestSuite 
suite = TestSuite.fromClass(?BankAccountTest); 
whos suite
  Name       Size            Bytes  Class                   Attributes

  suite      1x5             10502  matlab.unittest.Test   

各テストは matlab.unittest.Test オブジェクトです。

Test 要素の名前を表示します。

{suite.Name}'
ans =

  5×1 cell array

    {'BankAccountTest/testConstructor'               }
    {'BankAccountTest/testConstructorNotEnoughInputs'}
    {'BankAccountTest/testDesposit'                  }
    {'BankAccountTest/testWithdraw'                  }
    {'BankAccountTest/testNotifyInsufficientFunds'   }