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