メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

coder.runTest

R2026a

MATLAB 関数の呼び出しを MEX 関数の呼び出しで置き換えてテストを実行する

説明

coder.runTest(test,fcn) の実行する test によって、fcn の呼び出しが、コンパイルされたバージョンの fcn への呼び出しで置き換えられます。test は MATLAB® 関数、スクリプト、または MATLAB 関数の fcn を呼び出すクラスベースのユニット テストのファイル名です。fcn のコンパイルされたバージョンは既定の名前をもつ MEX 関数内になければなりません。fcn によって指定される既定の名前の後には、_mex が続きます。

例

coder.runTest(test,fcns,mexfcn) は指定された MATLAB 関数の呼び出しを、コンパイルされたバージョンの関数の呼び出しで置き換えます。MEX 関数 mexfcn には、コンパイルされたバージョンの指定された MATLAB 関数がすべて含まれていなければなりません。

例

coder.runTest(test,mexfile) は、コンパイルされたバージョンの関数が mexfile にある場合、MATLAB 関数の呼び出しを、コンパイルされたバージョンの関数の呼び出しで置き換えます。mexfile にはプラットフォーム固有のファイル拡張子が含まれます。mexfile にコンパイルされたバージョンの関数が含まれていない場合、coder.runTest は元の MATLAB 関数を実行します。個別の MATLAB 関数を指定して置き換えない場合、この構文を使用します。

例

例

すべて折りたたむ

coder.runTest を使用してテスト ファイルを実行します。1 つの MATLAB 関数をコンパイルされたバージョンで置き換えるように指定します。コンパイルされたバージョンを含む MEX 関数の名前は指定しません。したがって、coder.runTest は既定の名前をもつ MEX 関数を検索します。

ローカルの書き込み可能なフォルダーに、MATLAB 関数 myfun を作成します。

function y = myfun(u,v) %#codegen
y = u+v;
end

同じフォルダーに myfun を呼び出すテスト関数 mytest1 を作成します。

function mytest1
c = myfun(10,20);
disp(c);
end

MATLAB でテスト関数を実行します。

mytest1
    30

myfun の MEX 関数を生成します。

codegen myfun -args {0,0}

codegen は既定の名前が myfun_mex の MEX 関数を現在のフォルダーに生成します。

coder.runTest を実行します。テスト ファイル mytest1 の実行を指定します。myfun_mex でのコンパイルされたバージョンで myfun を置き換えるように指定します。

coder.runTest('mytest1','myfun')
    30

これにより、mytest1 を MATLAB コマンド ラインで実行した場合と同じ結果が得られます。

coder.runTest を使用してテスト ファイルを実行します。コンパイルされたバージョンの呼び出しで置き換える 2 つの関数を指定します。コンパイルされた関数のバージョンが含まれる MEX 関数を指定します。

ローカルの書き込み可能なフォルダーに、MATLAB 関数 myfun1 を作成します。

function y = myfun1(u) %#codegen
y = u;
end

もう一方の MATLAB 関数 myfun2 を同じフォルダーに作成します。

function y = myfun2(u, v) %#codegen
y = u + v;
end

同じフォルダーに myfun1 と myfun2 を呼び出すテスト関数を作成します。

function mytest2
c1 = myfun1(10);
disp(c1)
c2 = myfun2(10,20);
disp(c2)
end

テスト関数を実行します。

mytest2
    10

    30

myfun1 と myfun2 の MEX 関数を生成します。-o オプションを使用して、生成された MEX 関数の名前を指定します。

codegen -o mymex  myfun1 -args {0} myfun2 -args {0,0}

coder.runTest を実行します。mytest2 の実行を指定します。myfun1 と myfun2 の呼び出しを MEX 関数 mymex でコンパイルされたバージョンの呼び出しで置き換えるように指定します。

coder.runTest('mytest2',{'myfun1','myfun2'},'mymex')
    10

    30

これにより、mytest2 を MATLAB コマンド ラインで実行した場合と同じ結果が得られます。

coder.runTest を使用して、テストで MATLAB 関数の呼び出しをコンパイルされたバージョンの呼び出しで置き換えるテストを実行します。コンパイルされた関数のバージョンが含まれる MEX 関数のファイル名を指定します。

ローカルの書き込み可能なフォルダーに、MATLAB 関数 myfun1 を作成します。

function y = myfun1(u) %#codegen
y = u;
end

もう一方の MATLAB 関数 myfun2 を同じフォルダーに作成します。

function y = myfun2(u, v) %#codegen
y = u + v;
end

同じフォルダーに myfun1 と myfun2 を呼び出すテスト関数を作成します。

function  mytest2
c1 = myfun1(10);
disp(c1)
c2 = myfun2(10,20);
disp(c2)
end

テストを実行します。

mytest2
    10

    30

myfun1 と myfun2 の MEX 関数を生成します。-o オプションを使用して、生成された MEX 関数の名前を指定します。

codegen -o mymex  myfun1 -args {0} myfun2 -args {0,0}

coder.runTest を実行します。mytest2 の実行を指定します。mytest2 で呼び出される関数の呼び出しを mymex でのコンパイルされたバージョンの呼び出しで置き換えるように指定します。プラットフォーム固有の拡張子を含む、完全な MEX ファイル名を指定します。プラットフォーム固有の拡張子を取得するには mexext を使用します。

coder.runTest('mytest2',['mymex.', mexext])
    10

    30

これにより、mytest2 を MATLAB コマンド ラインで実行した場合と同じ結果が得られます。

クラスベースのユニット テストを使用して coder.runTest を実行します。

入力に 1 を加算する関数 addOne を記述します。

function y = addOne(x)
%#codegen
y = x + 1;
end

入力が 1 のときと入力が pi のときに addOne によって返される値を検証するクラスベースのユニット テストを記述します。

classdef TestAddOne < matlab.unittest.TestCase
    
    methods (Test)
        
        function reallyAddsOne(testCase)
            x = 1;
            y = addOne(x);
            testCase.verifyEqual(y,2);
        end
        
        function addsFraction(testCase)
            x = pi;
            y = addOne(x);
            testCase.verifyEqual(y,x+1);
        end
    end
end

addOne の呼び出しを addOne_mex の呼び出しに置き換えてクラスベースのユニット テストを実行します。

coder.runTest('TestAddOne', 'addOne')
Running TestAddOne
..
Done TestAddOne
__________


testbenchResult = 

  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

入力引数

すべて折りたたむ

MATLAB 関数、スクリプト、または生成された MEX のテスト対象となる MATLAB 関数を呼び出すクラスベースのユニット テストのファイル名。coder.runTest は、関数の呼び出しを生成された MEX の呼び出しで置き換えます。

例: 'mytest'

テスト実行時に置き換える MATLAB 関数の名前。coder.runTest はこの関数の呼び出しを、コンパイルされたバージョンの関数の呼び出しで置き換えます。fcn は名前空間内の関数にできません。

例: 'myfun'

テスト実行時に置き換える MATLAB 関数の名前。coder.runTest はこれらの関数の呼び出しを、コンパイルされたバージョンの関数の呼び出しで置き換えます。fcns は名前空間内の関数にはできません。

1 つの関数を 1 つの文字ベクトルまたは string スカラーとして指定します。

例: 'myfun'

例: "myfun"

複数の関数を文字ベクトルの cell 配列、または string の配列として指定します。coder.runTest を使用する前に、これらの関数を単一の MEX 関数にコンパイルしておきます。

例: {'myfun1','myfun2','myfun3'}

例: ["myfun1","myfun2"]

1 つ以上の関数に対して生成される MEX 関数の名前。

MATLAB Coder™ アプリまたは関数 codegen を使用してこの MEX 関数を生成します。

例: 'mymex'

1 つ以上の関数に対する MEX ファイルのファイル名およびプラットフォーム固有の拡張子。mexext を使用してプラットフォーム固有の MEX ファイル拡張子を取得します。

MATLAB Coder アプリまたは関数 codegen を使用してこの MEX ファイルを生成します。

例: ['myfunmex.',mexext]

例: ["myfunmex."+mexext]

ヒント

  • coder.runTest は出力を返しません。テスト結果を確認するには、テストに結果を表示するコードを含めます。

  • MEX および MATLAB 関数の動作を比較するには、以下のようにします。

    • MATLAB でテストを実行します。

    • codegen を使用して MEX 関数を生成します。

    • coder.runTest を使用して、元の関数の呼び出しを MEX 関数でコンパイルされたバージョンの呼び出しで置き換えるテストを実行します。

  • coder.runTest を使用して複数の関数をテストする前に、MATLAB 関数を単一の MEX 関数にコンパイルしておきます。

  • 構文 coder.runTest(test, mexfile) を使用する場合は、mexext を使用してプラットフォーム固有の MEX ファイル名の拡張子を取得します。以下に例を示します。

    coder.runTest('my_test', ['mymexfun.', mexext])

  • テスト中にエラーが発生した場合は、呼び出しスタック情報を使用してコードをデバックできます。

  • codegen を -test オプションを使用して実行することで、MEX 生成とテストを 1 つのステップに組み合わせることができます。たとえば、次のコードは myfunction の MEX 関数を生成し、myfunction への呼び出しを myfunction_mex への呼び出しに置き換えてテスト ファイル myfunction_test を呼び出します。

    codegen myfunction -test myfunction_test 

バージョン履歴

R2012a で導入