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