단위 테스트에 태그 지정하기
테스트 태그를 사용하여 여러 테스트를 범주별로 그룹화한 다음 지정된 태그를 사용해 테스트를 실행할 수 있습니다. 통상적인 테스트 태그는 특정 기능을 식별하거나 테스트 유형을 설명합니다.
테스트에 태그 지정하기
테스트 태그를 정의하려면 의미 있는 문자형 벡터로 구성된 셀형 배열 또는 string형 배열을 사용하십시오. 예를 들어, TestTags = {'Unit'}
또는 TestTags = ["Unit","FeatureA"]
를 사용합니다.
개별 테스트에 태그를 지정하려면
TestTags
메서드 특성(Attribute)을 사용하십시오.클래스 내의 모든 테스트에 태그를 지정하려면
TestTags
클래스 특성을 사용하십시오. 슈퍼클래스에서TestTags
클래스 특성을 사용하는 경우 서브클래스의 테스트는 이 태그를 상속합니다.
다음 예제 테스트 클래스 ExampleTagTest
는 TestTags
메서드 특성을 사용하여 개별 테스트에 태그를 지정합니다.
classdef ExampleTagTest < matlab.unittest.TestCase methods (Test) function testA (testCase) % test code end end methods (Test, TestTags = {'Unit'}) function testB (testCase) % test code end function testC (testCase) % test code end end methods (Test, TestTags = {'Unit','FeatureA'}) function testD (testCase) % test code end end methods (Test, TestTags = {'System','FeatureA'}) function testE (testCase) % test code end end end
클래스 ExampleTagTest
의 몇몇 테스트는 태그가 지정되어 있습니다. 예를 들어, testD
는 'Unit'
과 'FeatureA'
로 태그가 지정되어 있습니다. 테스트 testA
는 태그가 지정되어 있지 않습니다.
이 예제 테스트 클래스 ExampleTagClassTest
는 TestTags
클래스 특성을 사용하여 클래스 내의 모든 테스트에 태그를 지정하고 TestTags
메서드 특성을 사용하여 개별 테스트에 태그를 추가합니다.
classdef (TestTags = {'FeatureB'}) ... ExampleTagClassTest < matlab.unittest.TestCase methods (Test) function testF (testCase) % test code end end methods (Test, TestTags = {'FeatureC','System'}) function testG (testCase) % test code end end methods (Test, TestTags = {'System','FeatureA'}) function testH (testCase) % test code end end end
클래스 ExampleTagClassTest
의 각각의 테스트는 'FeatureB'
로 태그가 지정되어 있습니다. 또한, 개개의 테스트에는 'FeatureA'
, 'FeatureC'
, 'System'
등 다양한 태그가 지정되어 있습니다.
테스트 선택하고 실행하기
태그 지정된 테스트를 선택하고 실행하는 방법에는 세 가지가 있습니다.
runtests
를 사용하여 선별된 테스트 실행하기
runtests
함수를 사용하면 명시적으로 테스트 스위트(Test Suite)를 만들지 않고도 테스트를 선택하고 실행할 수 있습니다. ExampleTagTest
와 ExampleTagClassTest
에서 'FeatureA'
태그가 있는 모든 테스트를 선택하고 실행하십시오.
results = runtests({'ExampleTagTest','ExampleTagClassTest'},'Tag','FeatureA');
Running ExampleTagTest .. Done ExampleTagTest __________ Running ExampleTagClassTest . Done ExampleTagClassTest __________
runtests
가 세 개의 테스트를 선택하고 실행했습니다.
결과를 테이블에 표시하십시오.
table(results)
ans = 3×6 table Name Passed Failed Incomplete Duration Details ___________________________ ______ ______ __________ __________ ____________ 'ExampleTagTest/testE' true false false 0.00039529 [1×1 struct] 'ExampleTagTest/testD' true false false 0.00045658 [1×1 struct] 'ExampleTagClassTest/testH' true false false 0.00043899 [1×1 struct]
선택한 테스트는 ExampleTagTest
의 testE
와 testD
, 그리고 ExampleTagClassTest
의 testH
입니다.
TestSuite
메서드를 사용한 테스트 선택하기
ExampleTagTest
클래스에서 'FeatureA'
로 태그 지정된 테스트 스위트(Test Suite)를 만드십시오.
import matlab.unittest.TestSuite sA = TestSuite.fromClass(?ExampleTagTest,'Tag','FeatureA');
ExampleTagClassTest
클래스에서 'FeatureC'
로 태그 지정된 테스트 스위트(Test Suite)를 만드십시오.
sB = TestSuite.fromFile('ExampleTagClassTest.m','Tag','FeatureC');
이 테스트 스위트를 결합하고 테스트의 이름을 확인하십시오.
suite = [sA sB]; {suite.Name}'
ans = 3×1 cell array 'ExampleTagTest/testE' 'ExampleTagTest/testD' 'ExampleTagClassTest/testG'
HasTag
선택기를 사용하여 테스트 선택하기
ExampleTagTest
클래스와 ExampleTagClassTest
클래스의 모든 테스트가 포함된 테스트 스위트를 만드십시오.
import matlab.unittest.selectors.HasTag sA = TestSuite.fromClass(?ExampleTagTest); sB = TestSuite.fromFile('ExampleTagClassTest.m'); suite = [sA sB];
태그가 없는 테스트를 모두 선택하십시오.
s1 = suite.selectIf(~HasTag)
s1 = Test with properties: Name: 'ExampleTagTest/testA' ProcedureName: 'testA' TestClass: "ExampleTagTest" BaseFolder: 'C:\work' Parameterization: [0×0 matlab.unittest.parameters.EmptyParameter] SharedTestFixtures: [0×0 matlab.unittest.fixtures.EmptyFixture] Tags: {1×0 cell} Tests Include: 0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.
'Unit'
태그가 있는 테스트를 모두 선택하여 테스트 이름을 표시하십시오.
s2 = suite.selectIf(HasTag('Unit'));
{s2.Name}'
ans = 3×1 cell array 'ExampleTagTest/testD' 'ExampleTagTest/testB' 'ExampleTagTest/testC'
제약 조건을 사용하여 'FeatureB'
태그나 'System'
태그가 있는 테스트를 모두 선택하십시오.
import matlab.unittest.constraints.IsEqualTo constraint = IsEqualTo('FeatureB') | IsEqualTo('System'); s3 = suite.selectIf(HasTag(constraint)); {s3.Name}'
ans = 4×1 cell array 'ExampleTagTest/testE' 'ExampleTagClassTest/testH' 'ExampleTagClassTest/testG' 'ExampleTagClassTest/testF'
참고 항목
matlab.unittest.constraints
| matlab.unittest.selectors.HasTag
| matlab.unittest.TestSuite
| runtests
| matlab.unittest.TestCase