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