В этом примере показано, как анализировать информацию, возвращенную исполнителем тестов, созданным из SolverTest тест.
Создайте следующую функцию, которая решает корни квадратного уравнения в файле, quadraticSolver.m, в вашей рабочей папке.
type quadraticSolver.mfunction roots = 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
roots(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);
roots(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, matlab.unittest.TestResult объект. Это содержит информацию двух тестов в SolverTest.
whos resultName Size Bytes Class Attributes result 1x3 7613 matlab.unittest.TestResult
Чтобы видеть информацию для одного значения, введите:
result(1)
ans =
TestResult with properties:
Name: 'SolverTest/realSolution'
Passed: 1
Failed: 0
Incomplete: 0
Duration: 0.0065
Details: [1×1 struct]
Totals:
1 Passed, 0 Failed, 0 Incomplete.
0.0065241 seconds testing time.
К функциональности доступа, доступной для таблиц, создайте один из TestResult объект.
rt = table(result)
rt=3×6 table
Name Passed Failed Incomplete Duration Details
________________________________ ______ ______ __________ _________ ____________
{'SolverTest/realSolution' } true false false 0.0065241 {1×1 struct}
{'SolverTest/imaginarySolution'} true false false 0.0036673 {1×1 struct}
{'SolverTest/nonnumericInput' } true false false 0.0074686 {1×1 struct}
Сортировка результатов испытаний длительностью.
sortrows(rt,'Duration')ans=3×6 table
Name Passed Failed Incomplete Duration Details
________________________________ ______ ______ __________ _________ ____________
{'SolverTest/imaginarySolution'} true false false 0.0036673 {1×1 struct}
{'SolverTest/realSolution' } true false false 0.0065241 {1×1 struct}
{'SolverTest/nonnumericInput' } true false false 0.0074686 {1×1 struct}
Экспортируйте результаты испытаний в файл CSV.
writetable(rt,'myTestResults.csv','QuoteStrings',true)