Теги теста можно использовать для группирования тестов по категориям и последующего запуска тестов с указанными тегами. Типичные теги теста идентифицируют определенную функцию или описывают тип теста.
Для определения тегов теста используйте массив ячеек со значимыми векторами символов или строковый массив. Например, TestTags = {'Unit'} или TestTags = ["Unit","FeatureA"].
Для маркировки отдельных тестов используйте TestTags атрибут метода.
Чтобы отметить все тесты в классе, используйте 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 для выбора и выполнения тестов без явного создания набора тестов. Выберите и запустите все тесты из 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]Выбранные тесты: testE и testD от ExampleTagTest, и testH от ExampleTagClassTest.
TestSuite МетодыСоздание набора тестов из ExampleTagTest класс, который помечен тегом 'FeatureA'.
import matlab.unittest.TestSuite sA = TestSuite.fromClass(?ExampleTagTest,'Tag','FeatureA');
Создание набора тестов из ExampleTagClassTest класс, который помечен тегом 'FeatureC'.
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.TestCase | matlab.unittest.TestSuite | runtests