이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
함수 기반 테스트 확장하기
통상적으로 함수 기반 테스트에서는 Test
객체 모음을 명시적으로 생성하지 않고, 테스트 파일을 만들어 이 파일 이름을 runtests
함수로 전달합니다. 그러나 명시적인 테스트 스위트를 생성한 경우 함수 기반 테스트에서 추가 기능을 사용할 수 있습니다. 다음과 같은 추가 기능이 있습니다.
테스트 기록과 세부 정보 표시
테스트 선택
테스트 실행기를 사용자 지정하는 플러그인
그 외 추가 기능이 필요하다면 클래스 기반 단위 테스트 사용을 고려하십시오.
설정(Setup) 코드와 해제(Teardown) 코드에 대한 픽스처(Fixture)
테스트를 작성 시, applyFixture
메서드를 사용하여 다음과 같은 동작에 대한 설정 코드와 해제 코드를 처리합니다.
현재 작업 폴더 변경하기
경로에 폴더 추가하기
임시 폴더 생성하기
경고 표시 차단하기
따라서 이러한 픽스처
를 사용하면 함수 기반 테스트에서 setupOnce
, teardownOnce
, setup
, teardown
함수의 동작을 수동으로 코딩하는 일을 대신할 수 있습니다.
예를 들어 설정 코드와 해제 코드를 수동으로 작성하여 각 테스트에 대한 임시 폴더를 설정한 후 이를 현재 작업 폴더로 만들면, setup
함수와 teardown
함수가 다음과 같이 보일 것입니다.
function setup(testCase) % store current folder testCase.TestData.origPath = pwd; % create temporary folder testCase.TestData.tmpFolder = ['tmpFolder' datestr(now,30)]; mkdir(testCase.TestData.tmpFolder) % change to temporary folder cd(testCase.TestData.tmpFolder) end function teardown(testCase) % change to original folder cd(testCase.TestData.origPath) % delete temporary folder rmdir(testCase.TestData.tmpFolder) end
그러나 픽스처를 사용하면 수정한 setup
함수만 가지고도 위의 두 함수를 모두 대체할 수 있습니다. 픽스처는 초기 상태를 복원하는 데 필요한 정보를 저장하고 해제 동작을 수행합니다.
function setup(testCase) % create temporary folder f = testCase.applyFixture(matlab.unittest.fixtures.TemporaryFolderFixture); % change to temporary folder testCase.applyFixture(matlab.unittest.fixtures.CurrentFolderFixture(f.Folder)); end
테스트 기록과 세부 정보 표시
테스트 함수에서 log
메서드를 사용할 수 있습니다. 기본적으로 테스트 실행기는 세부 정보 표시 수준 1(Terse
)로 기록된 진단을 보고합니다. 기타 세부 정보 표시 수준을 가진 메시지에 대응하려면 matlab.unittest.plugins.LoggingPlugin.withVerbosity
메서드를 사용하십시오. TestRunner
객체를 생성하고 LoggingPlugin
을 추가하고 run
메서드를 사용하여 스위트를 실행합니다. 테스트 실행기를 생성하는 방법에 대한 자세한 내용은 테스트 실행기를 사용자 지정하기 항목을 참조하십시오.
테스트 스위트 생성하기
함수 기반 테스트를 호출하면 Test
객체 모음이 반환됩니다. testsuite
함수나 matlab.unittest.TestSuite.fromFile
메서드를 사용할 수도 있습니다. 원하는 특정 테스트가 있고 해당 테스트 이름을 알고 있는 경우, matlab.unittest.TestSuite.fromName
을 사용할 수 있습니다. 어느 특정 폴더 내 모든 테스트 파일로부터 스위트를 생성하려는 경우, matlab.unittest.TestSuite.fromFolder
를 사용할 수 있습니다.
테스트 선택
명시적인 테스트 스위트에서는 선택기를 사용하여 테스트 스위트를 구체화할 수 있습니다. 몇 가지 선택기는 클래스 기반 테스트에만 적용할 수 있지만, 다음과 같이 테스트 이름에 따라 스위트의 테스트를 선택할 수 있습니다.
matlab.unittest.TestSuite.fromFile
과 같은 스위트 생성 메서드에서'Name'
이름-값 쌍의 인수를 사용합니다.selectors
인스턴스와 선택적constraints
인스턴스를 사용합니다.
matlab.unittest.TestSuite.fromFile
과 같은 스위트 생성 메서드에서 이러한 접근 방식을 사용하거나, 스위트를 생성한 후 selectIf
메서드를 사용해 해당 스위트를 필터링합니다. 예를 들어, 아래 목록에서 suite
의 네 값은 동일합니다.
import matlab.unittest.selectors.HasName import matlab.unittest.constraints.ContainsSubstring import matlab.unittest.TestSuite.fromFile f = 'rightTriTolTest.m'; selector = HasName(ContainsSubstring('Triangle')); % fromFile, name-value pair suite = TestSuite.fromFile(f,'Name','*Triangle*') % fromFile, selector suite = TestSuite.fromFile(f,selector) % selectIf, name-value pair fullSuite = TestSuite.fromFile(f); suite = selectIf(fullSuite,'Name','*Triangle*') % selectIf, selector fullSuite = TestSuite.fromFile(f); suite = selectIf(fullSuite,selector)
선택기나 이름-값 쌍을 사용해 이 스위트 생성 메서드 중 하나를 사용하면, 테스트 프레임워크에서는 필터링된 스위트를 생성합니다. selectIf
메서드를 사용하는 경우, 테스트 프레임워크는 전체 테스트 스위트를 생성한 후 이를 필터링합니다. 테스트 스위트가 클 경우, 이 접근 방식은 성능에 영향을 줄 수 있습니다.
테스트 실행하기
함수 기반 테스트를 실행하는 방법은 여러 가지가 있습니다.
모든 테스트 실행 | 사용할 함수 |
---|---|
파일 내 | 테스트 파일 이름과 함께 runtests 실행 |
스위트 내 | 해당 스위트와 함께 run 실행 |
사용자 지정 테스트 실행기가 있는 스위트 내 | run . 테스트 실행기를 사용자 지정하기 항목을 참조하십시오. |
자세한 내용은 다양한 워크플로에 대한 테스트 실행하기 항목을 참조하십시오.
테스트 진단에 대한 프로그래밍적 접근
경우에 따라 테스트 프레임워크는 DiagnosticsRecordingPlugin
플러그인을 사용하여 테스트 결과에 대한 진단을 기록합니다. 프레임워크는 사용자가 다음 중 하나를 수행하는 경우 기본적으로 이 플러그인을 사용합니다.
runtests
함수를 사용하여 테스트를 실행합니다.입력값 없이
testrunner
함수를 사용하여 테스트를 실행합니다.runperf
함수를 사용하여 성능 테스트를 실행합니다.TimeExperiment
클래스의run
메서드를 사용하여 성능 테스트를 실행합니다.
테스트를 실행한 후에는 TestResult
객체의 Details
속성에 있는 DiagnosticRecord
필드를 사용하여 기록된 진단에 액세스할 수 있습니다. 예를 들어, 테스트 결과가 변수 results
에 저장된 경우 result(2).Details.DiagnosticRecord
에 스위트의 두 번째 테스트에 대해 기록된 진단이 포함됩니다.
기록된 진단은 DiagnosticRecord
객체입니다. 테스트에 대한 특정 유형의 테스트 진단에 액세스하려면 DiagnosticRecord
클래스의 selectFailed
, selectPassed
, selectIncomplete
, selectLogged
메서드를 사용하십시오.
기본적으로, DiagnosticsRecordingPlugin
플러그인은 matlab.automation.Verbosity.Terse
세부 정보 표시 수준에서 기록된 이벤트와 가설 검정(Qualification) 실패를 기록합니다. 자세한 내용은 DiagnosticsRecordingPlugin
및 DiagnosticRecord
를 참조하십시오.
테스트 실행기를 사용자 지정하기
TestRunner
객체를 사용하여 프레임워크가 테스트 스위트를 실행하는 방법을 사용자 지정합니다. TestRunner
객체를 통해 다음을 수행할 수 있습니다.
withNoPlugins
메서드를 사용하여 명령 창에서 출력값을 생성하지 않을 수 있습니다.runInParallel
메서드를 사용하여 병렬로 테스트를 실행합니다.addPlugin
메서드를 사용하여 테스트 실행기에 플러그인을 추가합니다.
예를 들어, 테스트 스위트 suite
를 사용하여 자동 테스트 실행기를 생성하고 TestRunner
의 run
메서드를 통해 테스트를 실행할 수 있습니다.
runner = matlab.unittest.TestRunner.withNoPlugins; results = runner.run(suite);
플러그인을 사용하여 테스트 실행기를 추가로 사용자 지정합니다. 예를 들어, 출력값을 리디렉션하거나 코드 실행률을 파악하거나 테스트 실행기에서 경고에 대응하는 방법을 변경할 수 있습니다. 자세한 내용은 테스트 실행기(Test Runner)에 플러그인 추가하기 항목과 plugins
클래스를 참조하십시오.
참고 항목
matlab.unittest.TestCase
| matlab.unittest.TestSuite
| matlab.automation.diagnostics.Diagnostic
| matlab.unittest.qualifications
| matlab.unittest.constraints
| matlab.unittest.selectors