本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

分析测试用例结果

此示例说明如何分析从 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

输出参数 result 是一个 matlab.unittest.TestResult 对象。它包含 SolverTest 中的两个测试的信息。

whos result
  Name        Size            Bytes  Class                         Attributes

  result      1x2              4864  matlab.unittest.TestResult              

显示一个测试的信息

要查看一个值的信息,请键入:

result(1)
ans = 
  TestResult with properties:

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

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

创建测试结果表格

要访问表格可用的功能,先从 TestResult 对象创建一个表格。

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

    {'SolverTest/testRealSolution'     }    true      false       false        0.45139    {1x1 struct}
    {'SolverTest/testImaginarySolution'}    true      false       false       0.011828    {1x1 struct}

按持续时间对测试结果排序。

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

    {'SolverTest/testImaginarySolution'}    true      false       false       0.011828    {1x1 struct}
    {'SolverTest/testRealSolution'     }    true      false       false        0.45139    {1x1 struct}

将测试结果导出到 CSV 文件。

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

相关主题