主要内容

使用本地函数编写基于脚本的测试

此示例演示如何编写基于脚本的测试,该测试使用局部函数作为辅助函数。示例函数近似角度的正弦和余弦。基于脚本的测试使用局部函数检查近似值,以检查公差范围内的相等性。

创造批准测试功能

在文件中创建这个函数,批准INCOS.m,在您当前的MATLAB文件夹中。这个函数取一个以弧度为单位的角,并用泰勒级数近似这个角的正弦和余弦值。

作用[sinA,cosA]=批准INCOS(x)对于一个给定的角度(以弧度为单位),求这个角度的正弦和余弦值的近似%使用泰勒级数。sinA=x;cosA=1;altSign=-1;n = 3:2:26 sinA = sinA + altSign*(x^n)/factorial(n);cosA = cosA + altSign*(x^(n-1))/factorial(n-1);altSign = -altSign;结束

创建测试脚本

在当前的MATLAB文件夹中,创建一个新脚本,approxSinCosTest.m

注意:在脚本中包括函数需要MATLAB®R2016b或更高版本。

%%测试0rad%检验期望值为0[sinApprox, cosApprox] = approxSinCos (0);assertWithAbsTol (sinApprox 0) assertWithRelTol (cosApprox, 1)% %测试2π%测试2pi的预期值[SINAPROX,COSAPROX]=批准收入(2*pi);资产含Absol(SINAPROX,0)资产含Reltol(COSAPROX,1)检验/ 4等于%检验/4的正弦和余弦相等[SINAPROX,COSAPROX]=批准收入(pi/4);资产Withreltol(SINAPROX、COSAPROX、,正弦和余弦应该相等%%测试与MatlabFCN匹配% 2 /3的测试值匹配MATLAB输出的sin和cos函数x = 2 *π/ 3;[sinApprox, cosApprox] = approxSinCos (x);assertWithRelTol (sinApprox sin (x),“罪不相配”) assertWithRelTol (cosApprox cos (x),因为不匹配作用assertWithAbsTol (actVal expVal变长度输入宗量)%用于在绝对公差范围内断言相等性的辅助函数。%接受两个值和一个可选消息并进行比较百分比在1e-6的绝对容忍范围内。tol=1e-6;tf=abs(actVal expVal)<=tol;assert(tf,varargin{:});结束作用资产增值税(actVal、expVal、varargin)在一个相对容忍范围内断言相等的Helper函数。%接受两个值和一个可选消息并进行比较%它们在0.1%的相对公差范围内。relTol = 0.001;if (expVal - actVal) <= relTol.*abs(expVal);断言(tf,变长度输入宗量{:});结束

每个单元测试使用明确肯定来检查不同的输出批准函数。通常,在比较浮点值时,要指定比较的公差。当地的功能艾索托资产资产负债表是辅助函数,用于计算实际值和期望值是否在指定的绝对或相对公差内相等。

  • 测试0 rad测试0弧度角度的计算值和预期值是否在绝对公差范围内1 e-6或相对容许量0.1%。通常,您使用绝对公差来比较接近0的值。

  • 测试2π测试角度的计算值和期望值是否2 \π美元弧度在绝对公差范围内相等1 e-6或相对容许量0.1%。

  • 测试pi大于4的等式测试的正弦和余弦是否$pi/4$均在0.1%的相对耐受范围内相等。

  • 测试匹配MATLAB fcn测试所计算的的正弦和余弦值是否2π/ 3美元等于余弦功能在0.1%的相对耐受范围内。

运行测试

执行运行测试函数运行中的四个测试approxSinCosTest.m这个运行测试函数分别执行每个测试。如果一个测试失败,MATLAB仍然运行其余的测试。如果你执行批准作为一个脚本而不是使用运行测试,如果遇到失败的断言,MATLAB将暂停整个脚本的执行。此外,当您使用运行测试函数,MATLAB提供信息测试诊断。

结果= runtests (“approxSinCosTest”);
运行approxSinCosTest……完成approxSinCosTest  __________

所有的测试都通过了。

创建一个测试结果表。

rt=表格(结果)
rt = 4 x6表名传递失败的不完整的持续时间的细节  _________________________________________ ______ ______ __________ ________ ____________ {' approxSinCosTest / Test0rad '}真假假0.50618 {1 x1 struct} {' approxSinCosTest / Test2pi '}真假假0.023397 {1 x1 struct} {' approxSinCosTest / TestPiOver4Equality '}真的假假的0.024788 {1x1 struct} {'approxSinCosTest/TestMatchesMATLABFcn'}真假假0.048019 {1x1 struct}

另请参阅

|

相关的例子

更多关于