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

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

  • Тестирование журналирования и многословия

  • Тестирование выбора

  • Плагины, чтобы настроить исполнителя тестов

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

Фиксаторы для Setup и кода отключения

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

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

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

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

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

Они fixtures займите место ручного кодирования действий в setupOnce, teardownOnceнастройка, и 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 объекты. Чтобы получить доступ к конкретным типам диагностического теста для теста, используйте selectFailedselectPassedselectIncomplete, и 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 классы.

Смотрите также

| | | | |

Похожие темы