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

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

  • Тестовое логгирование и подробность

  • Выбор теста

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

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

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

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

См. также

| | | | |

Похожие темы