Можно использовать тестовые теги, чтобы сгруппировать тесты по категориям и затем запустить тесты с заданными тегами. Типичные тестовые теги идентифицируют конкретную функцию или описывают тип теста.
Чтобы задать тестовые теги, используйте массив ячеек из значимых векторов символов или строковые массивы. Для примера, 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