Main Content

テスト ケースの結果の解析

この例では、SolverTest テスト ケースから作成されたテスト ランナーによって返された情報を解析する方法を示します。

二次ソルバー関数の作成

作業フォルダーの quadraticSolver.m ファイルに二次方程式の根を解く次の関数を作成します。

type quadraticSolver.m
function r = 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

r(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);
r(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 の探索

出力引数 resultmatlab.unittest.TestResult オブジェクトです。これには、SolverTest の 2 つのテストの情報が含まれています。

whos result
  Name        Size            Bytes  Class                         Attributes

  result      1x3              9164  matlab.unittest.TestResult              

1 つのテストの情報の表示

1 つの値の情報を表示するには、以下を入力します。

result(1)
ans = 
  TestResult with properties:

          Name: 'SolverTest/realSolution'
        Passed: 1
        Failed: 0
    Incomplete: 0
      Duration: 0.0066
       Details: [1×1 struct]

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

テスト結果の表の作成

テーブルで使用可能な機能にアクセスするには、TestResult オブジェクトから 1 つ作成します。

rt = table(result)
rt=3×6 table
                  Name                  Passed    Failed    Incomplete    Duration       Details   
    ________________________________    ______    ______    __________    _________    ____________

    {'SolverTest/realSolution'     }    true      false       false       0.0066456    {1×1 struct}
    {'SolverTest/imaginarySolution'}    true      false       false       0.0067508    {1×1 struct}
    {'SolverTest/nonnumericInput'  }    true      false       false        0.011253    {1×1 struct}

テスト結果を期間を基準に並べ替えます。

sortrows(rt,'Duration')
ans=3×6 table
                  Name                  Passed    Failed    Incomplete    Duration       Details   
    ________________________________    ______    ______    __________    _________    ____________

    {'SolverTest/realSolution'     }    true      false       false       0.0066456    {1×1 struct}
    {'SolverTest/imaginarySolution'}    true      false       false       0.0067508    {1×1 struct}
    {'SolverTest/nonnumericInput'  }    true      false       false        0.011253    {1×1 struct}

テスト結果を CSV ファイルにエクスポートします。

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

関連するトピック