Main Content

테스트 케이스 결과 분석하기

이 예제에서는 SolverTest 테스트 케이스에서 생성된 테스트 실행기가 반환한 정보를 분석하는 방법을 보여줍니다.

2차 솔버 함수 생성하기

작업 폴더의 파일 quadraticSolver.m에서 2차 방정식의 근을 구하는 다음과 같은 함수를 만드십시오.

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

2차 솔버 함수에 대한 테스트 생성하기

작업 폴더의 파일 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에 있는 두 개의 테스트에 대한 정보가 포함됩니다.

whos result
  Name        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)

관련 항목