Main Content

MATLAB でのクラスベースのユニット テストの作成

MATLAB® プログラムをテストするには、検定を使用してユニット テストを作成します。検定とは、値をテストし、エラーに応答するための手法です。

テスト クラスの定義

テスト クラスは、matlab.unittest.TestCase から継承し、Test 属性をもつ methods ブロックを含まなければなりません。methods ブロックには、それぞれがユニット テストである関数が含まれます。汎用の基本的なクラスの定義は次のとおりです。

%% Test Class Definition
classdef MyComponentTest < matlab.unittest.TestCase
   
    %% Test Method Block
    methods (Test)
        % includes unit test functions
    end
end

ユニット テスト

ユニット テストは、1 単位のソフトウェアの正確性を判定するメソッドです。各ユニット テストは methods ブロック内に含まれます。関数は入力として TestCase インスタンスを受け入れなければなりません。

%% Test Class Definition
classdef MyComponentTest < matlab.unittest.TestCase
    
    %% Test Method Block
    methods (Test)
        
        %% Test Function
        function testASolution(testCase)      
            %% Exercise function under test
            % act = the value from the function under test

            %% Verify using test qualification
            % exp = your expected value
            % testCase.<qualification method>(act,exp);
        end
    end
end

検定とは、値をテストしてエラーの対応を行う手法のことです。次の表は検定タイプの一覧です。

検証

この検定を使用して例外をスローせずにエラーを生成して記録します。残りのテストも最後まで実行されます。

matlab.unittest.qualifications.Verifiable
仮定

特定の前提条件が満たされている場合にのみ検定が実行されることを確認します。ただし、前提条件を満たさずにテストを実行してもテスト エラーは生成されません。仮定エラーが発生すると、テスト フレームワークによってそのテストはフィルター処理済みとマークされます。

matlab.unittest.qualifications.Assumable
アサーション

この検定を使用して、現在のテストの前提条件が満たされていることを確認します。

matlab.unittest.qualifications.Assertable
致命的なアサーション

アサーションの地点でのエラーによって現在のテスト メソッドの残りが無効になる場合や、状態が回復不能になる場合は、この検定を使用します。

matlab.unittest.qualifications.FatalAssertable

MATLAB ユニット テスト フレームワークは、各検定タイプに約 25 個の検定メソッドを提供しています。たとえば、verifyClass または assertClass を使用して想定されるクラスの値であることをテストし、assumeTrue または fatalAssertTrue を使用して実績値が true であるかどうかをテストします。検定メソッドの概要については、検証、アサーション、その他の検定の表を参照してください。

多くの場合、各ユニット テストの関数は、テストしているコードを実行して実績値を取得し、関連する期待値を定義します。たとえば、関数 plus をテストしている場合、実績値は plus(2,3) で期待値は 5 となる場合があります。テスト関数内で、実績値および期待値を検定メソッドに渡します。以下に例を示します。

testCase.verifyEqual(plus(2,3),5)

基本ユニット テストの例は、クラスを使用する単純なテスト ケースの記述を参照してください。

高度なテスト クラスのその他の機能

MATLAB ユニット テスト フレームワークには、より高度なテスト クラスを作成するために次のようないくつかの機能があります。

関連するトピック