主要内容

coder.runTest

运行测试替换对的调用MATLAB函数调用MEX函数

描述

例子

coder.runTest (测验fcn运行测验替换对fcn的编译版本调用fcn测验是MATLAB的文件名吗®函数、脚本或调用MATLAB函数的基于类的单元测试fcn.编译版的fcn必须在具有默认名称的MEX函数中。默认名称是指定的名称fcn紧随其后的是_mex

例子

coder.runTest (测验fcnsmexfcn将对指定MATLAB函数的调用替换为对函数的编译版本的调用。MEX函数mexfcn必须包含所有指定的MATLAB函数的编译版本。

例子

coder.runTest (测验mexfile当函数的编译版本存在时,将对MATLAB函数的调用替换为对该函数的编译版本的调用mexfilemexfile包括特定于平台的文件扩展名。如果mexfile不包含函数的编译版本,coder.runTest运行原始的MATLAB函数。如果不想指定要替换的各个MATLAB函数,请使用此语法。

例子

全部折叠

使用coder.runTest运行测试文件。指定用编译后的版本替换一个MATLAB函数。您不需要提供包含已编译版本的MEX函数的名称。因此,coder.runTest查找具有默认名称的MEX函数。

在本地可写文件夹中,创建一个MATLAB函数,myfun

函数Y = myfun(u,v)% # codegenY = u+v;结束

在同一个文件夹中,创建一个测试函数,mytest1,那就叫myfun

函数Mytest1 c = myfun(10,20);disp (c);结束

在MATLAB中运行测试函数。

mytest1
30.

生成的MEX函数myfun

codegenmyfunarg游戏{0}

在当前文件夹中,codegen生成一个具有默认名称的MEX函数,myfun_mex

运行coder.runTest.指定要运行测试文件mytest1.指定替换myfun在编译后的版本中myfun_mex

coder.runTest (“mytest1”“myfun”
30.

结果和你跑步时是一样的mytest1在MATLAB命令行。

使用coder.runTest运行测试文件。指定用对编译版本的调用替换两个函数。指定包含这些函数的编译版本的MEX函数。

在本地可写文件夹中,创建一个MATLAB函数,myfun1

函数Y = myfun1(u)% # codegenY = u;结束

在同一个文件夹中,创建另一个MATLAB函数,myfun2

函数Y = myfun2(u, v)% # codegenY = u + v;结束

在同一个文件夹中,创建一个调用myfun1而且myfun2

函数Mytest2 c1 = myfun1(10);Disp (c1) c2 = myfun2(10,20);disp (c2)结束

运行测试函数。

mytest2
10 30

生成的MEX函数myfun1而且myfun2.使用- o选项指定生成的MEX函数的名称。

codegen- omymexmyfun1arg游戏{0}myfun2arg游戏{0}

运行coder.runTest.指定要运行mytest2.指定要替换对的调用myfun1而且myfun2在MEX函数中调用已编译的版本mymex

coder.runTest (“mytest2”, {“myfun1”“myfun2”},“mymex”
10 30

结果和你跑步时是一样的mytest2在MATLAB命令行。

使用coder.runTest运行一个测试,将测试中对MATLAB函数的调用替换为对编译版本的调用。为包含函数的编译版本的MEX函数指定文件名。

在本地可写文件夹中,创建一个MATLAB函数,myfun1

函数Y = myfun1(u)% # codegenY = u;结束

在同一个文件夹中,创建另一个MATLAB函数,myfun2

函数Y = myfun2(u, v)% # codegenY = u + v;结束

在同一个文件夹中,创建一个调用myfun1而且myfun2

函数Mytest2 c1 = myfun1(10);Disp (c1) c2 = myfun2(10,20);disp (c2)结束

运行测试。

mytest2
10 30

生成的MEX函数myfun1而且myfun2.使用- o选项指定生成的MEX函数的名称。

codegen- omymexmyfun1arg游戏{0}myfun2arg游戏{0}

运行coder.runTest.指定要运行mytest2.指定要替换对由调用的函数的调用mytest2中的编译版本调用mymex.指定完整的MEX文件名,包括特定于平台的扩展名。使用mexext以获得特定于平台的扩展。

coder.runTest (“mytest2”, (“mymex”。, mexext])
10 30

结果和你跑步时是一样的mytest2在MATLAB命令行。

运行coder.runTest使用基于类的单元测试。

写函数addOne,将输入加1。

函数y = addOne(x)% # codegenY = x + 1;结束

编写一个基于类的单元测试,验证返回的值addOne当输入为1时,当输入为π

classdefTestAddOne < matlab.unittest.TestCase方法(测试)函数reallyAddsOne(testCase) x = 1;y = addOne(x);testCase.verifyEqual (y, 2);结束函数addsFraction(testCase) x = pi;y = addOne(x);testCase.verifyEqual (y、x + 1);结束结束结束

运行基于类的单元测试,替换对的调用addOne通过呼叫addOne_mex

coder.runTest (“TestAddOne”“addOne”
运行TestAddOne ..Done TestAddOne __________ testbenchResult = 1×2带有属性的TestResult数组:Name Passed Failed Incomplete Duration Details总计:2 Passed, 0 Failed, 0 Incomplete. 0.28516秒测试时间。

输入参数

全部折叠

MATLAB函数、脚本或基于类的单元测试的文件名,用于调用要测试生成的MEX的MATLAB函数。coder.runTest将对函数的调用替换为对生成的MEX的调用。

例子:“mytest”

运行测试时要替换的MATLAB函数名称。coder.runTest将对此函数的调用替换为对该函数的编译版本的调用。

例子:“myfun”

运行测试时要替换的MATLAB函数名称。coder.runTest将对这些函数的调用替换为对这些函数的编译版本的调用。

将一个函数指定为字符向量或字符串标量。

例子:“myfun”

例子:“myfun”

指定多个函数作为字符向量的单元格数组。使用前coder.runTest,将这些函数编译成一个MEX函数。

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

为一个或多个函数生成的MEX函数名。

方法生成此MEX函数MATLAB编码器™App或codegen函数。

例子:“mymex”

用于一个或多个功能的MEX文件的文件名和平台特定扩展名。使用mexext以获取平台特定的MEX文件扩展名。

生成此MEX文件使用MATLAB编码器App或codegen函数。

例子:[' myfunmex。”,mexext]

数据类型:字符

提示

  • coder.runTest不返回输出。要查看测试结果,请在测试中包含显示结果的代码。

  • 比较MEX和MATLAB函数行为:

    • 在MATLAB中运行测试。

    • 使用codegen生成MEX函数。

    • 使用coder.runTest运行测试,将对原始函数的调用替换为对MEX函数中已编译版本的调用。

  • 使用前coder.runTest为了测试多个函数,将MATLAB函数编译成一个MEX函数。

  • 如果你使用语法mexfile coder.runTest(测试),使用mexext以获取平台特定的MEX文件扩展名。例如:

    coder.runTest (“my_test”, (“mymexfun”。, mexext])

  • 如果在测试期间发生错误,您可以使用调用堆栈信息调试代码。

  • 您可以通过运行将MEX生成和测试结合在一起codegen以及选择。例如,下面的代码生成一个MEX函数myfunction并调用测试文件myfunction_test,替换对myfunction通过呼叫myfunction_mex

    codegenmyfunction以及myfunction_test

版本历史

在R2012a中引入

Baidu
map