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

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

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

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

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

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

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

При записи тестов используйте метод TestCase.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

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

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

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

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

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

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

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

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

Используйте эти подходы в методе генерации комплекта, такие как fromFile, или создайте комплект и отфильтруйте его с помощью метода TestSuite.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)

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

Тестовое выполнение

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

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

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

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

Если при запуске тесты с функцией runtests или методом run TestSuite или TestCase, среда тестирования использует плагин DiagnosticsRecordingPlugin, который записывает диагностику на результатах испытаний.

После того, как вы запустите тесты, можно получить доступ к зарегистрированной диагностике через поле DiagnosticRecord в свойстве Details на TestResult. Например, если ваши результаты испытаний хранятся в переменной results, найдите записанную диагностику для второго теста в комплекте путем вызова records = 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.

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

| | | | |

Похожие темы