exponenta event banner

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

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

Похожие темы