此示例演示如何编写基于脚本的测试,该测试使用局部函数作为辅助函数。示例函数近似角度的正弦和余弦。基于脚本的测试使用局部函数检查近似值,以检查公差范围内的相等性。
批准
测试功能在文件中创建这个函数,批准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π
测试角度的计算值和期望值是否弧度在绝对公差范围内相等1 e-6
或相对容许量0.1%。
测试pi大于4的等式
测试的正弦和余弦是否均在0.1%的相对耐受范围内相等。
测试匹配MATLAB fcn
测试所计算的的正弦和余弦值是否等于罪
和余弦
功能在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}