exponenta event banner

matlab.unittest.selectors.HasProcedureName класс

Пакет: matlab.unittest.selectors

Селектор для TestSuite элементы, определяемые наименованием процедуры

Описание

HasProcedureName фильтры селектора TestSuite элементов массива, определяемых именем процедуры. Имя тестовой процедуры не включает имя класса или пакета, а также информацию о параметризации. В тесте на основе класса имя процедуры является именем метода теста. В функциональном тесте это имя локальной функции, содержащей тест. В тесте на основе сценария это имя, сгенерированное из заголовка раздела теста.

Строительство

matlab.unittest.selectors.HasProcedureName(n) создает селектор для TestSuite элементы, определяемые наименованием процедуры, n.

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

Входные аргументы

развернуть все

Имя процедуры, указанное как вектор символа, скаляр строки или matlab.unittest.constraints.Constraint экземпляр. Имя тестовой процедуры не включает имя класса или пакета, а также информацию о параметризации. В тесте на основе класса имя процедуры является именем метода теста. В функциональном тесте это имя локальной функции, содержащей тест. В тесте на основе сценария это имя раздела теста.

Пример: "Test1"

Пример: ContainsSubstring('Test')

Свойства

развернуть все

Условие, которому должно соответствовать имя процедуры для включения в набор тестов, указанное как экземпляр matlab.unittest.constraints.Constraint класс.

Копирование семантики

Значение. Сведения о том, как классы значений влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Создайте следующий тестовый класс в файле, ExampleTest.m, в текущей папке.

classdef ExampleTest < matlab.unittest.TestCase
    methods(Test)
        function testPathAdd(testCase)
            % test code
        end
        function testOne(testCase)
            % test code
        end
         function testTwo(testCase)
            % test code
        end
    end
end

В командной строке создайте набор тестов из ExampleTest.m и проверьте содержимое.

import matlab.unittest.TestSuite;
import matlab.unittest.selectors.HasProcedureName;
import matlab.unittest.constraints.EndsWithSubstring;

suite = TestSuite.fromFile('ExampleTest.m');
{suite.Name}
ans =

  1×3 cell array

    {'ExampleTest/testPathAdd'}    {'ExampleTest/testOne'}    {'ExampleTest/testTwo'}

Комплект содержит три теста.

Выберите все элементы набора тестов с именем процедуры testPathAddи изучите содержимое.

s1 = suite.selectIf(HasProcedureName("testPathAdd"))
s1 = 

  Test with properties:

                  Name: 'ExampleTest/testPathAdd'
         ProcedureName: 'testPathAdd'
             TestClass: "ExampleTest"
            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.

Отфильтрованный набор тестов содержит только один тестовый элемент.

Выберите все элементы набора тестов с именем процедуры, оканчивающимся на 'One' или 'Two'и изучите содержимое.

s1 =  suite.selectIf(HasProcedureName(EndsWithSubstring('One')) | ...
    HasProcedureName(EndsWithSubstring('Two')));
{s1.Name}
ans =

  1×2 cell array

    {'ExampleTest/testOne'}    {'ExampleTest/testTwo'}

Во время построения набора тестов создайте набор тестов, содержащий только тесты с подстрокой 'One'.

import matlab.unittest.constraints.ContainsSubstring;
s2 = TestSuite.fromFile('ExampleTest.m',...
    HasProcedureName(ContainsSubstring('One')))
s2 = 

  Test with properties:

                  Name: 'ExampleTest/testOne'
         ProcedureName: 'testOne'
             TestClass: "ExampleTest"
            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.

Альтернативы

Используйте HasProcedureName для обеспечения максимальной гибкости при создании тестовых наборов из имен процедур. Кроме того, во время создания набора тестов можно фильтровать набор тестов с помощью 'ProcedureName' пара имя-значение. Например, следующие строки кода функционально эквивалентны.

s = TestSuite.fromClass(?ExampleTest,'ProcedureName','Test1');
s = testsuite('ExampleTest.m','ProcedureName','Test1');
Представлен в R2017a