exponenta event banner

Расширение функциональных тестов

Как правило, с помощью функциональных тестов создается тестовый файл и передается имя файла в runtests функция без явного создания набора Test объекты. Однако при создании явного набора тестов в функциональном тестировании доступны дополнительные функции. К этим функциям относятся:

  • Регистрация тестов и детализация

  • Выбор теста

  • Подключаемые модули для настройки тестового питателя

Для получения дополнительных функциональных возможностей рассмотрите возможность использования модульных тестов на основе классов.

Приспособления для настройки и кода отрывного устройства

При написании тестов используйте applyFixture метод обработки кода настройки и разрыва для таких действий, как:

  • Изменение текущей рабочей папки

  • Добавление папки к пути

  • Создание временной папки

  • Подавление отображения предупреждений

Они fixtures вместо ручного кодирования действий в setupOnce, teardownOnce, setup, и teardown функции функционального теста.

Например, если вручную написать код установки и разрыва, чтобы настроить временную папку для каждого теста, а затем сделать эту папку текущей рабочей папкой, setup и teardown функции могут выглядеть следующим образом.

function setup(testCase)
% store current folder
testCase.TestData.origPath = pwd;

% create temporary folder
testCase.TestData.tmpFolder = ['tmpFolder' datestr(now,30)];
mkdir(testCase.TestData.tmpFolder)

% change to temporary folder
cd(testCase.TestData.tmpFolder)
end

function teardown(testCase)
% change to original folder
cd(testCase.TestData.origPath)

% delete temporary folder
rmdir(testCase.TestData.tmpFolder)
end

Однако можно также использовать приспособление для замены обеих этих функций только измененной setup функция. Приспособление хранит информацию, необходимую для восстановления исходного состояния, и выполняет действия по отрыву.

function setup(testCase)
% create temporary folder
f = testCase.applyFixture(matlab.unittest.fixtures.TemporaryFolderFixture);

% change to temporary folder
testCase.applyFixture(matlab.unittest.fixtures.CurrentFolderFixture(f.Folder));
end

Регистрация тестов и детализация

Ваши функции тестирования могут использовать log способ. По умолчанию тестовый питатель сообщает о диагностике, зарегистрированной на уровне детализации 1 (Terse). Используйте matlab.unittest.plugins.LoggingPlugin.withVerbosity способ реагирования на сообщения других уровней многословности. Построить TestRunner объект, добавьте LoggingPluginи запустите комплект с помощью run способ. Дополнительные сведения о создании тестового питателя см. в разделе Настройка тестового питателя.

Создание набора тестов

Вызов функционального теста возвращает набор Test объекты. Вы также можете использовать testsuite функции или matlab.unittest.TestSuite.fromFile способ. Если требуется определенный тест и известно имя теста, можно использовать matlab.unittest.TestSuite.fromName. Если требуется создать набор из всех тестов в определенной папке, можно использовать matlab.unittest.TestSuite.fromFolder.

Выбор теста

Используя явный набор тестов, используйте селекторы для уточнения набора. Несколько селекторов применимы только для тестов на основе классов, но можно выбрать тесты для набора на основе имени теста:

  • Используйте 'Name' аргумент пары имя-значение в методе генерации набора, например matlab.unittest.TestSuite.fromFile.

  • Использовать selectors экземпляр и необязательный constraints экземпляр.

Используйте эти подходы в методе создания пакета, например: matlab.unittest.TestSuite.fromFileили создайте пакет и выполните его фильтрацию с помощью selectIf способ. Например, в этом списке четыре значения suite эквивалентны.

import matlab.unittest.selectors.HasName
import matlab.unittest.constraints.ContainsSubstring
import matlab.unittest.TestSuite.fromFile

f = 'rightTriTolTest.m';
selector = HasName(ContainsSubstring('Triangle'));

% fromFile, name-value pair
suite = TestSuite.fromFile(f,'Name','*Triangle*')

% fromFile, selector
suite = TestSuite.fromFile(f,selector)

% selectIf, name-value pair
fullSuite = TestSuite.fromFile(f);
suite = selectIf(fullSuite,'Name','*Triangle*')

% selectIf, selector
fullSuite = TestSuite.fromFile(f);
suite = selectIf(fullSuite,selector)

При использовании одного из методов создания набора с помощью селектора или пары «имя-значение» структура тестирования создает отфильтрованный набор. Если вы используете selectIf структура тестирования создает полный набор тестов, а затем фильтрует его. Для больших наборов тестов этот подход может иметь последствия для производительности.

Выполнение теста

Существует несколько способов выполнения функционального теста.

Запуск всех тестовИспользовать функцию
В файлеruntests с именем тестового файла
В люксеrun с люксом
В комплекте с пользовательским тестовым питателемrun. (См. раздел Настройка тестового питателя.)

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

Программный доступ к тестовой диагностике

В некоторых случаях в структуре тестирования используется DiagnosticsRecordingPlugin для записи результатов диагностики. Платформа использует плагин по умолчанию, если вы делаете одно из следующих действий:

  • Запуск тестов с помощью runtests функция.

  • Запуск тестов с помощью testrunner функция без ввода.

  • Запуск тестов с помощью run способ TestSuite или TestCase классы.

  • Запустите тесты производительности с помощью runperf функция.

  • Запустите тесты производительности с помощью run способ TimeExperiment класс.

После выполнения тестов можно получить доступ к записанной диагностике с помощью DiagnosticRecord в поле Details свойство на TestResult объект. Например, если результаты теста хранятся в переменной results, то result(2).Details.DiagnosticRecord содержит записанную диагностику для второго теста в наборе.

Регистрируемая диагностика: DiagnosticRecord объекты. Для доступа к определенным типам диагностики теста используйте selectFailed, selectPassed, selectIncomplete, и selectLogged методы DiagnosticRecord класс.

По умолчанию DiagnosticsRecordingPlugin плагин регистрирует ошибки квалификации и регистрируемые события на matlab.unittest.Verbosity.Terse уровень многословности. Дополнительные сведения см. в разделе DiagnosticsRecordingPlugin и DiagnosticRecord.

Настройка тестового питателя

Использовать TestRunner объект для настройки способа запуска тестового набора в инфраструктуре. С помощью TestRunner объект можно:

  • Вывод в командном окне не производится с помощью withNoPlugins способ.

  • Параллельное выполнение тестов с помощью runInParallel способ.

  • Добавление подключаемых модулей в тестовый питатель с помощью addPlugin способ.

Например, используйте набор тестов ,suite, для создания фонового тестового питателя и запуска тестов с помощью run способ TestRunner.

runner = matlab.unittest.TestRunner.withNoPlugins;
results = runner.run(suite);

Используйте подключаемые модули для дальнейшей настройки тестового питателя. Например, можно перенаправить вывод, определить покрытие кода или изменить реакцию тестового питателя на предупреждения. Дополнительные сведения см. в разделе Добавление подключаемого модуля в тестовый питатель и plugins классы.

См. также

| | | | |

Связанные темы