テスト ケースの結果の解析
この例では、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
の探索
出力引数 result
は matlab.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)