Как правило, с функциональными тестами, вы создаете тестовый файл и передаете имя файла runtests функция, явным образом не создавая набор Test объекты. Однако, если вы создаете явный тестовый набор, дополнительные функции доступны в функциональном тестировании. Эти функции включают:
Тестирование журналирования и многословия
Тестирование выбора
Плагины, чтобы настроить исполнителя тестов
Для дополнительной функциональности рассмотрите использование Тестов модулей, основанных на классах.
При записи тестов используйте 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 классы.
matlab.unittest.TestCase | matlab.unittest.TestSuite | matlab.unittest.qualifications | matlab.unittest.constraints | matlab.unittest.diagnostics | matlab.unittest.selectors