테스트 케이스 결과 분석하기
이 예제에서는 SolverTest 테스트 케이스에서 생성된 테스트 실행기가 반환한 정보를 분석하는 방법을 보여줍니다.
2차 솔버 함수 생성하기
작업 폴더의 파일 quadraticSolver.m에서 2차 방정식의 근을 구하는 다음과 같은 함수를 만드십시오.
type quadraticSolver.mfunction 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
2차 솔버 함수에 대한 테스트 생성하기
작업 폴더의 파일 SolverTest.m에 다음 테스트 클래스를 만듭니다.
type SolverTest.mclassdef 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 resultName Size Bytes Class Attributes result 1x3 9164 matlab.unittest.TestResult
하나의 테스트에 대한 정보 표시하기
하나의 값에 대한 정보를 보려면 다음을 입력하십시오.
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 객체에서 테이블을 만드십시오.
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)