Анализ результатов теста

Этот пример показывает, как анализировать информацию, возвращенную исполнителем тестов, созданным из теста SolverTest.

Создание квадратичной функции решателя

Создайте следующую функцию, которая решает корни квадратного уравнения в файле, quadraticSolver.m, в вашей рабочей папке.

type quadraticSolver.m
function 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.m
classdef SolverTest < matlab.unittest.TestCase
    % SolverTest tests solutions to the quadratic equation
    % a*x^2 + b*x + c = 0
    
    methods (Test)
        function testRealSolution(testCase)
            actSolution = quadraticSolver(1,-3,2);
            expSolution = [2,1];
            testCase.verifyEqual(actSolution,expSolution);
        end
        function testImaginarySolution(testCase)
            actSolution = quadraticSolver(1,2,10);
            expSolution = [-1+3i, -1-3i];
            testCase.verifyEqual(actSolution,expSolution);
        end
    end
    
end 

Выполнение теста SolverTest

Создайте тестовый набор, quadTests.

quadTests = matlab.unittest.TestSuite.fromClass(?SolverTest);
result = run(quadTests);
Running SolverTest
..
Done SolverTest
__________

Все тесты проходятся.

Исследование Выходного аргумента, результата

Выходным аргументом, result, является объект matlab.unittest.TestResult. Это содержит информацию двух тестов в SolverTest.

whos result
  Name        Size            Bytes  Class                         Attributes

  result      1x2              5136  matlab.unittest.TestResult              

Отображение информации для одного теста

Чтобы видеть информацию для одного значения, введите:

result(1)
ans = 
  TestResult with properties:

          Name: 'SolverTest/testRealSolution'
        Passed: 1
        Failed: 0
    Incomplete: 0
      Duration: 0.4558
       Details: [1x1 struct]

Totals:
   1 Passed, 0 Failed, 0 Incomplete.
   0.45581 seconds testing time.

Составление таблицы результатов испытаний

К функциональности доступа, доступной таблицам, создайте один из объекта TestResult.

rt = table(result)
rt=2×6 table
                   Name                   Passed    Failed    Incomplete    Duration      Details   
    __________________________________    ______    ______    __________    ________    ____________

    'SolverTest/testRealSolution'         true      false       false        0.45581    [1x1 struct]
    'SolverTest/testImaginarySolution'    true      false       false       0.014811    [1x1 struct]

Сортировка результатов испытаний длительностью.

sortrows(rt,'Duration')
ans=2×6 table
                   Name                   Passed    Failed    Incomplete    Duration      Details   
    __________________________________    ______    ______    __________    ________    ____________

    'SolverTest/testImaginarySolution'    true      false       false       0.014811    [1x1 struct]
    'SolverTest/testRealSolution'         true      false       false        0.45581    [1x1 struct]

Экспортируйте результаты испытаний в файл CSV.

writetable(rt, 'myTestResults.csv' , 'QuoteStrings' ,true)

Похожие темы