exponenta event banner

Теговые модульные испытания

Теги теста можно использовать для группирования тестов по категориям и последующего запуска тестов с указанными тегами. Типичные теги теста идентифицируют определенную функцию или описывают тип теста.

Теговые тесты

Для определения тегов теста используйте массив ячеек со значимыми векторами символов или строковый массив. Например, 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'

См. также

| | | |