主要内容

使用函数编写简单的测试用例

您可以通过在包含主函数和局部测试函数的单个文件中定义单元测试来测试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返回特定系数的正确实解。金宝搏官方网站例如,方程 x 2 - 3. x + 2 0 有真正的解决方案金宝搏官方网站 x 1 x 2 .的函数调用quadraticSolver用这个方程的系数。然后,它使用verifyEqual验证功能比较实际输出actSolution到预期输出expsolution.

功能test = solverTest test = functiontests(局部函数);结束功能4 .求解函数的解(1,2);expSolution = [2 1];verifyEqual (testCase actSolution expSolution)结束

定义第二个本地功能testImaginarySolution来验证quadraticSolver返回特定系数的正确虚解。金宝搏官方网站例如,方程 x 2 + 2 x + 1 0 0 有想象的解决方案金宝搏官方网站 x - 1 + 3. x - 1 - 3. .与前一个函数一样,这个函数调用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.测试时间。

另请参阅

||

相关话题