控件继承的测试类中定义单元测试,可以测试MATLAB®程序matlab.unittest.TestCase
类。基于类的测试中的单元测试是一种确定软件单元正确性的方法。它在a中定义方法
块的测试
属性,并可以使用测试值的资格和对失败的响应。有关基于类的测试的详细信息,请参见作者基于类的单元测试在MATLAB.
此示例演示如何编写基于类的单元测试,以确定当前文件夹中文件中定义的函数的正确性。的quadraticSolver
函数将一个二次多项式的系数作为输入,并返回该多项式的根。如果系数被指定为非数值值,则函数抛出一个错误。
函数根= quadraticSolver (a, b, c)% quadraticSolver返回解万博 尤文图斯二次方程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);结束
在当前文件夹中的文件中,创建SolverTest
类的子类化matlab.unittest.TestCase
类。类为测试提供了一个位置quadraticSolver
函数。添加三个单元测试在方法
块的测试
属性。这些测试的quadraticSolver
函数对抗实解、虚解和误差条件。万博 尤文图斯每一个测试
方法必须接受TestCase
实例作为输入。块中测试的顺序并不重要。
首先,创建一个测试
方法realSolution
来验证quadraticSolver
返回特定系数的正确实解。万博 尤文图斯例如,方程
有真正的解决方案万博 尤文图斯
和
.的方法调用quadraticSolver
用这个方程的系数。然后,它使用verifyEqual
的方法matlab.unittest.TestCase
以比较实际输出actSolution
达到预期产量expSolution
.
classdefSolverTest < matlab.unittest.TestCase方法(测试)函数realSolution(testCase) actSolution = quadraticSolver(1,-3,2);expSolution = [2 1];testCase.verifyEqual (actSolution expSolution)结束结束结束
创建第二个测试
方法imaginarySolution
来验证quadraticSolver
返回特定系数的正确虚解。万博 尤文图斯例如,方程
有想象的解决方案万博 尤文图斯
和
.就像前面的方法一样,这个方法调用quadraticSolver
用这个方程的系数,然后用verifyEqual
方法比较实际输出actSolution
达到预期产量expSolution
.
classdefSolverTest < matlab.unittest.TestCase方法(测试)函数realSolution(testCase) actSolution = quadraticSolver(1,-3,2);expSolution = [2 1];testCase.verifyEqual (actSolution expSolution)结束函数imaginarySolution(testCase) actSolution = quadraticSolver(1,2,10);expSolution = [-1+3i -1-3i];testCase.verifyEqual (actSolution expSolution)结束结束结束
最后,添加一个测试
方法nonnumericInput
来验证quadraticSolver
对非数值系数产生错误。使用verifyError
的方法matlab.unittest.TestCase
要测试函数是否抛出指定的错误“quadraticSolver: InputMustBeNumeric”
当它被输入调用时1
,“3”
,2
.
classdefSolverTest < matlab.unittest.TestCase方法(测试)函数realSolution(testCase) actSolution = quadraticSolver(1,-3,2);expSolution = [2 1];testCase.verifyEqual (actSolution expSolution)结束函数imaginarySolution(testCase) actSolution = quadraticSolver(1,2,10);expSolution = [-1+3i -1-3i];testCase.verifyEqual (actSolution expSolution)结束函数nonnumericInput (testCase) testCase.verifyError (@ () quadraticSolver (1,“3”2),...“quadraticSolver: InputMustBeNumeric”)结束结束结束
运行所有的测试SolverTest
类,创建一个TestCase
对象,然后调用运行
方法。在本例中,所有三个测试都通过了。
testCase = SolverTest;结果= testCase.run
运行SolverTest……完成SolverTest __________
result = 1×3 TestResult数组,属性为:Name Passed Failed Incomplete Duration Details总计:3 Passed, 0 Failed, 0 Incomplete。
控件指定的单个测试也可以运行测试
方法。运行特定的测试
方法,将方法的名称传递给运行
.例如,运行realSolution
方法。
结果=运行(testCase,“realSolution”)
SolverTest运行。完成SolverTest __________
result = TestResult with properties: Name: 'SolverTest/realSolution' Passed: 1 Failed: 0 Incomplete: 0 Duration: 0.0082 Details: [1×1 struct]总计:1 Passed, 0 Failed, 0 Incomplete. 0.0081829秒测试时间。