分析测试用例结果
此示例说明如何分析从 SolverTest 测试用例创建的测试运行器返回的信息。
创建二次求解器函数
创建以下函数来对您的工作文件夹下的文件 quadraticSolver.m 中二次方程的根求解。
type quadraticSolver.mfunction r = quadraticSolver(a,b,c)
% quadraticSolver returns solutions to the
% quadratic equation a*x^2 + b*x + c = 0.
if ~isa(a,"numeric") || ~isa(b,"numeric") || ~isa(c,"numeric")
error("quadraticSolver:InputMustBeNumeric", ...
"Coefficients must be numeric.")
end
r(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);
r(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a);
end
为二次求解器函数创建测试
在您的工作文件夹下的文件 SolverTest.m 中,创建以下测试类。
type SolverTest.mclassdef SolverTest < matlab.unittest.TestCase
methods (Test)
function realSolution(testCase)
actSolution = quadraticSolver(1,-3,2);
expSolution = [2 1];
testCase.verifyEqual(actSolution,expSolution)
end
function imaginarySolution(testCase)
actSolution = quadraticSolver(1,2,10);
expSolution = [-1+3i -1-3i];
testCase.verifyEqual(actSolution,expSolution)
end
function nonnumericInput(testCase)
testCase.verifyError(@()quadraticSolver(1,"-3",2), ...
"quadraticSolver:InputMustBeNumeric")
end
end
end
运行 SolverTest 测试用例
创建一个测试套件 quadTests。
quadTests = matlab.unittest.TestSuite.fromClass(?SolverTest); result = run(quadTests);
Running SolverTest ... Done SolverTest __________
所有测试都已通过。
浏览输出参量 result
输出参量 result 是一个 matlab.unittest.TestResult 对象。它包含 SolverTest 中的两个测试的信息。
whos resultName Size Bytes Class Attributes result 1x3 9164 matlab.unittest.TestResult
显示一个测试的信息
要查看一个值的信息,请键入:
result(1)
ans =
TestResult with properties:
Name: 'SolverTest/realSolution'
Passed: 1
Failed: 0
Incomplete: 0
Duration: 0.0066
Details: [1×1 struct]
Totals:
1 Passed, 0 Failed, 0 Incomplete.
0.0066456 seconds testing time.
创建测试结果表格
要访问表格可用的功能,先从 TestResult 对象创建一个表格。
rt = table(result)
rt=3×6 table
Name Passed Failed Incomplete Duration Details
________________________________ ______ ______ __________ _________ ____________
{'SolverTest/realSolution' } true false false 0.0066456 {1×1 struct}
{'SolverTest/imaginarySolution'} true false false 0.0067508 {1×1 struct}
{'SolverTest/nonnumericInput' } true false false 0.011253 {1×1 struct}
按持续时间对测试结果排序。
sortrows(rt,'Duration')ans=3×6 table
Name Passed Failed Incomplete Duration Details
________________________________ ______ ______ __________ _________ ____________
{'SolverTest/realSolution' } true false false 0.0066456 {1×1 struct}
{'SolverTest/imaginarySolution'} true false false 0.0067508 {1×1 struct}
{'SolverTest/nonnumericInput' } true false false 0.011253 {1×1 struct}
将测试结果导出到 CSV 文件。
writetable(rt,'myTestResults.csv','QuoteStrings',true)