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

В этом примере показано, как анализировать информацию, возвращенную исполнителем тестов, созданным из 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
    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 result
  Name        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)

Похожие темы