함수를 사용하여 간단한 테스트 케이스 작성하기
메인 함수와 로컬 테스트 함수를 포함하는 단일 파일 내에 단위 테스트를 정의하여 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
를 생성합니다. localfunctions
를 functiontests
로 전달하여 파일 내의 로컬 함수에 대한 함수 핸들의 셀형 배열을 자동으로 생성하십시오.
function tests = quadraticSolverTest tests = functiontests(localfunctions); end
로컬 테스트 함수 정의하기
로컬 함수를 테스트 파일에 추가하여 실수 해 및 허수 해에 대해 quadraticSolver
함수를 테스트합니다. 파일 내의 테스트 순서는 중요하지 않습니다. 각 로컬 함수는 하나의 입력값 testCase
, 즉 matlab.unittest.FunctionTestCase
객체를 받아야 합니다. 테스트 프레임워크가 자동으로 이 객체를 생성합니다. 함수는 객체를 사용하여 값을 테스트하고 실패 상황에 대응하는 가설 검정을 수행합니다.
로컬 함수 testRealSolution
을 정의하여 quadraticSolver
가 특정 계수에 대해 올바른 실수 해를 반환하는지를 확인합니다. 예를 들어, 방정식 은 실수 해 과 를 가집니다. 이 함수는 이 방정식의 계수를 사용하여 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
가 특정 계수에 대해 올바른 허수 해를 반환하는지를 확인합니다. 예를 들어, 방정식 은 허수 해 와 를 가집니다. 위의 함수와 마찬가지로 이 함수는 이 방정식의 계수를 사용하여 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.
참고 항목
runtests
| functiontests
| localfunctions