Можно использовать тестовые теги, чтобы сгруппировать тесты в категории и затем запустить тесты с заданными тегами. Типичные тестовые теги идентифицируют конкретную функцию или описывают тип теста.
Чтобы задать тестовые теги, используйте массив ячеек значимых векторов символов или массива строк. Например, 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'.
Существует три способа выбрать и запустить теговые тесты:
Запуститесь Выбрал Tests Using 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.TestSuite | runtests | matlab.unittest.TestCase