이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

클래스를 사용하여 간단한 테스트 케이스 작성하기

이 예제에서는 MATLAB® 함수 quadraticSolver.m에 대한 단위 테스트를 작성하는 방법을 보여줍니다.

quadraticSolver.m 함수 생성하기

다음 MATLAB 함수는 2차 방정식의 해를 구합니다. MATLAB 경로에 있는 폴더에 이 함수를 만드십시오.

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 클래스 정의 생성하기

matlab.unittest 프레임워크를 사용하려면, matlab.unittest.TestCase에서 파생된 클래스인 테스트 케이스 형식으로 MATLAB 함수(테스트)를 작성하십시오.

서브클래스 SolverTest를 만드십시오.


% Copyright 2015 The MathWorks, Inc.

classdef SolverTest < matlab.unittest.TestCase

    methods (Test)

    end

end

다음 단계에서는 특정 테스트를 만드는 방법을 보여줍니다. 이 테스트를 (Test) 특성이 주어진 methods 블록 내에 배치하십시오.

실수 해에 대한 테스트 메서드 생성하기

quadraticSolver가 실수 해에 대한 올바른 값을 반환하는지 확인하려면, 테스트 메서드 testRealSolution을 만드십시오. 예를 들어, 방정식 은 실수 해 를 가집니다. 이 메서드는 이 방정식의 입력값을 사용하여 quadraticSolver를 호출합니다. 해 expSolution[2,1]입니다.

matlab.unittest.TestCase 메서드 verifyEqual을 사용하여 함수 actSolution의 출력값을 예상 출력값 expSolution과 비교하십시오. 가설 검정(Qualification)에 실패하는 경우 테스트는 실행을 계속합니다.


% Copyright 2015 The MathWorks, Inc.

function testRealSolution(testCase)
    actSolution = quadraticSolver(1,-3,2);
    expSolution = [2,1];
    testCase.verifyEqual(actSolution,expSolution)
end 

이 함수를 methods (Test) 블록에 추가하십시오.

허수 해에 대한 테스트 메서드 생성하기

quadraticSolver가 허수 해에 대한 올바른 값을 반환하는지 확인하는 테스트를 만드십시오. 예를 들어, 방정식 은 허수 해 를 가집니다. 함수 testImaginarySolutionmethods (Test) 블록 내에 추가하십시오.


% Copyright 2015 The MathWorks, Inc.

function testImaginarySolution(testCase)
    actSolution = quadraticSolver(1,2,10);
    expSolution = [-1+3i, -1-3i];
    testCase.verifyEqual(actSolution,expSolution)
end

블록 내의 테스트 순서는 중요하지 않습니다.

클래스 정의 저장하기

다음은 전체 SolverTest 클래스 정의입니다. MATLAB 경로 내 폴더에 이 파일을 저장하십시오.

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 테스트 케이스에서 테스트 실행하기

SolverTest 클래스 정의 파일에서 모든 테스트를 실행하십시오.

testCase = SolverTest;
res = run(testCase)
Running SolverTest
..
Done SolverTest
__________


res = 

  1x2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.73301 seconds testing time.

단일 테스트 메서드 실행하기

단일 테스트 testRealSolution을 실행하려면 다음을 수행하십시오.

testCase = SolverTest;
res = run(testCase,'testRealSolution')
Running SolverTest
.
Done SolverTest
__________


res = 

  TestResult with properties:

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

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

관련 항목