主要内容

用类编写简单的测试用例

控件继承的测试类中定义单元测试,可以测试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类

在当前文件夹中的文件中,创建SolverTest类的子类化matlab.unittest.TestCase类。类为测试提供了一个位置quadraticSolver函数。添加三个单元测试在方法块的测试属性。这些测试的quadraticSolver函数对抗实解、虚解和误差条件。万博 尤文图斯每一个测试方法必须接受TestCase实例作为输入。块中测试的顺序并不重要。

首先,创建一个测试方法realSolution来验证quadraticSolver返回特定系数的正确实解。万博 尤文图斯例如,方程 x 2 - 3. x + 2 0 有真正的解决方案万博 尤文图斯 x 1 x 2 .的方法调用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返回特定系数的正确虚解。万博 尤文图斯例如,方程 x 2 + 2 x + 1 0 0 有想象的解决方案万博 尤文图斯 x - 1 + 3. x - 1 - 3. .就像前面的方法一样,这个方法调用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类中的测试

运行所有的测试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秒测试时间。

另请参阅

相关的话题