您可以通过在包含主函数和局部测试函数的单个文件中定义单元测试来测试MATLAB®程序。在基于功能的测试中,每个本地功能执行软件的一部分,并确定产生结果的正确性。有关基于功能的测试的详细信息,请参见编写基于功能的单元测试.
这个例子展示了如何编写一个基于函数的测试来限定当前文件夹中文件中定义的函数的正确性。的quadraticSolver
函数将一个二次多项式的系数作为输入,并返回该多项式的根。如果将系数指定为非数值,则函数将抛出错误。
功能根= quadraticSolver (a, b, c)%四raticsolver返回解决方案金宝搏官方网站二次方程a*x^2 + b*x + c = 0。如果~ isa (,'数字')||〜isa(b,'数字')||〜isa(c,'数字')错误('quadraticsolver:inputmustbenumeric',…“系数必须为数字。”);结束根(1)= (-b +√(b^2 - 4*a*c)) / (2*a);√(2)= (-b -√(b^2 - 4*a*c)) / (2*a);结束
测试quadraticSolver
函数,创建测试文件Quadraticsolvertest.m.
在您当前的文件夹中。然后,定义文件中的主要功能和两个本地函数进行测试quadraticSolver
反对真实和虚构的解决方案。金宝搏官方网站主函数和局部函数的名称必须以单词“test”开始或结束,这是不区分大小写的。此外,main函数的名称必须与测试文件的名称相对应。
要运行基于功能的单元测试,必须定义将所有本地测试功能收集到测试阵列中的主要函数。定义主要功能quadraticSolverTest
在您的测试文件中。主函数调用functiontests
生成测试数组测试
.通过localfunction.
来functiontests
要自动生成文件函数的单元格数组,请将函数句柄置于您的文件中的本地函数。
功能测试= functiontests(局部函数);结束
将本地函数添加到测试文件中,以测试quadraticSolver
对实解和虚解的函数。金宝搏官方网站文件中测试的顺序并不重要。每个局部函数必须接受单个输入测试用例
,这是一个matlab.unittest.functiontess.
目的。测试框架自动生成此对象。该函数使用该对象执行测试值并响应故障的资格。
定义一个局部函数testRealSolution
来验证quadraticSolver
返回特定系数的正确实解。金宝搏官方网站例如,方程
有真正的解决方案金宝搏官方网站
和
.的函数调用quadraticSolver
用这个方程的系数。然后,它使用verifyEqual
验证功能比较实际输出actSolution
到预期输出expsolution.
.
功能test = solverTest test = functiontests(局部函数);结束功能4 .求解函数的解(1,2);expSolution = [2 1];verifyEqual (testCase actSolution expSolution)结束
定义第二个本地功能testImaginarySolution
来验证quadraticSolver
返回特定系数的正确虚解。金宝搏官方网站例如,方程
有想象的解决方案金宝搏官方网站
和
.与前一个函数一样,这个函数调用quadraticSolver
用这个方程的系数,然后用verifyEqual
验证功能比较实际输出actSolution
到预期输出expsolution.
.
功能test = solverTest test = functiontests(局部函数);结束功能4 .求解函数的解(1,2);expSolution = [2 1];verifyEqual (testCase actSolution expSolution)结束功能testimaginesssolution(testcase)Actsolution =四跑车(1,2,10);Expsolution = [-1 + 3i -1-3i];verifyEqual (testCase actSolution expSolution)结束
使用runtests.
方法中定义的测试Quadraticsolvertest.m.
文件。在本例中,两个测试都通过了。
结果= runtests (“quadraticSolverTest.m”)
运行quadraticSolverTest . .完成quadraticSolverTest __________
结果= 1×2 TestResult数组带有属性:名称传递了失败的不完整持续时间详细信息总计:2传递,0失败,0个不完整。0.89529秒测试时间。
还可以使用运行
函数。
结果=运行(quadraticSolverTest)
运行quadraticSolverTest . .完成quadraticSolverTest __________
results = 1×2 TestResult array with properties: Name Passed Failed Incomplete Duration Details总计:2 Passed, 0 Failed, 0 Incomplete. 0.017825 seconds test time.测试时间。
functiontests
|localfunction.
|runtests.