Main Content

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

메인 함수와 로컬 테스트 함수를 포함하는 단일 파일 내에 단위 테스트를 정의하여 MATLAB® 프로그램을 테스트할 수 있습니다. 함수 기반 테스트에서 각 로컬 함수는 소프트웨어의 일부를 실행하고 생성된 결과의 정확성을 가설 검정합니다. 함수 기반 테스트에 대한 자세한 내용은 함수 기반 단위 테스트 작성하기 항목을 참조하십시오.

이 예제에서는 함수 기반 테스트를 작성하여 현재 폴더 내 파일에 정의된 함수의 정확성을 가설 검정하는 방법을 보여줍니다. quadraticSolver 함수는 2차 다항식 계수를 입력값으로 받아 해당 2차 다항식의 근을 반환합니다. 계수가 숫자형이 아닌 값으로 지정된 경우 함수가 오류를 발생시킵니다.

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

테스트 생성하기

quadraticSolver 함수를 테스트하기 위해 현재 폴더에 테스트 파일 quadraticSolverTest.m을 만듭니다. 그런 다음, 메인 함수와 두 개의 로컬 함수를 파일에 정의하여 실수 해 및 허수 해에 대해 quadraticSolver를 테스트합니다. 메인 함수 및 로컬 함수의 이름은 "test"(대/소문자 구분 안 함)라는 단어로 시작하거나 끝나야 합니다. 또는, 메인 함수의 이름은 테스트 파일의 이름에 해당해야 합니다.

메인 함수 정의하기

함수 기반 단위 테스트를 실행하려면 모든 로컬 테스트 함수를 하나의 테스트 배열로 모으는 메인 함수를 정의해야 합니다. 테스트 파일에 메인 함수 quadraticSolverTest를 정의합니다. 메인 함수는 functiontests를 호출하여 테스트 배열 tests를 생성합니다. localfunctionsfunctiontests로 전달하여 파일 내의 로컬 함수에 대한 함수 핸들의 셀형 배열을 자동으로 생성하십시오.

function tests = quadraticSolverTest
tests = functiontests(localfunctions);
end

로컬 테스트 함수 정의하기

로컬 함수를 테스트 파일에 추가하여 실수 해 및 허수 해에 대해 quadraticSolver 함수를 테스트합니다. 파일 내의 테스트 순서는 중요하지 않습니다. 각 로컬 함수는 하나의 입력값 testCase, 즉 matlab.unittest.FunctionTestCase 객체를 받아야 합니다. 테스트 프레임워크가 자동으로 이 객체를 생성합니다. 함수는 객체를 사용하여 값을 테스트하고 실패 상황에 대응하는 가설 검정을 수행합니다.

로컬 함수 testRealSolution을 정의하여 quadraticSolver가 특정 계수에 대해 올바른 실수 해를 반환하는지를 확인합니다. 예를 들어, 방정식 x2-3x+2=0은 실수 해 x=1x=2를 가집니다. 이 함수는 이 방정식의 계수를 사용하여 quadraticSolver를 호출합니다. 그런 다음 verifyEqual 가설 검정 함수를 사용하여 함수의 실제 출력값인 actSolution을 예상 출력값 expSolution과 비교합니다.

function tests = quadraticSolverTest
tests = functiontests(localfunctions);
end

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

두 번째 로컬 함수 testImaginarySolution을 정의하여 quadraticSolver가 특정 계수에 대해 올바른 허수 해를 반환하는지를 확인합니다. 예를 들어, 방정식 x2+2x+10=0은 허수 해 x=-1+3ix=-1-3i를 가집니다. 위의 함수와 마찬가지로 이 함수는 이 방정식의 계수를 사용하여 quadraticSolver를 호출한 후 verifyEqual 가설 검정 함수를 사용하여 실제 출력값인 actSolution을 예상 출력값 expSolution과 비교합니다.

function tests = quadraticSolverTest
tests = functiontests(localfunctions);
end

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

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

테스트 파일에서 테스트 실행하기

runtests 함수를 사용하여 quadraticSolverTest.m 파일에 정의된 테스트를 실행합니다. 이 예제에서는 두 테스트가 모두 통과했습니다.

results = runtests('quadraticSolverTest.m')
Running quadraticSolverTest
..
Done quadraticSolverTest
__________
results = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

run 함수를 사용하여 테스트를 실행할 수도 있습니다.

results = run(quadraticSolverTest)
Running quadraticSolverTest
..
Done quadraticSolverTest
__________
results = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

참고 항목

| |

관련 항목