Пакет: matlab.unittest.qualifications
Проверка, чтобы подтвердить предусловия теста
Assertable
класс обеспечивает проверку, чтобы подтвердить предусловия теста. Кроме действий, выполняемых для отказов, Assertable
класс работает то же самое другими классами проверки в matlab.unittest.qualifications
пакет.
После отказа утверждения, Assertable
класс сообщает среде тестирования об отказе путем броска AssertionFailedException
объект. Это поведение является самым полезным, когда отказ в точке утверждения представляет остаток от текущего недопустимого теста, но не предотвращает соответствующее выполнение последующих тестов. Часто, вы используете утверждения, чтобы гарантировать, что предусловия текущего теста не нарушены или что фиксаторы настраиваются правильно. Если вы не можете сделать исключение отключения фиксатора безопасным или восстановить состояние среды после отказа, используйте критические утверждения вместо этого.
Когда отказ утверждения производится в рамках метода TestCase
класс, тип метода определяет, какие тесты затронуты:
Test
метод — маркеры инфраструктуры целый Test
метод, как отказавший и неполный.
TestMethodSetup
или TestMethodTeardown
метод — маркеры инфраструктуры Test
метод, чтобы запуститься для того экземпляра метода, как отказавший и неполный.
TestClassSetup
или TestClassTeardown
метод — маркеры инфраструктуры целый тестовый класс, как отказавший и неполный.
Утверждения позволяют остающимся тестам получить покрытие, когда предусловия нарушены в тесте, но состояние является восстанавливаемым. Они предотвращают ненужные отказы, не выполняя более поздние верификации, которые перестали работать из-за делаемых недействительным предусловий. Если отказ не влияет на предусловия теста или вызывает проблемы с настройкой фиксатора или отключением, используйте верификации, которые гарантируют, что полное содержание теста запускается.
matlab.unittest.qualifications.Assertable
классом является handle
класс.
Assertable
класс предоставляет несколько методов проверки для тестирования значений и ответа на отказы. Например, assertEmpty
тесты, что значение пусто, и assertTrue
тесты, что фактическое значение верно.
Примечание
Методы Assertable
класс соответствует методам Verifiable
класс. Они отличаются только в терминах типа проверки. Можно вызвать Assertable
методы таким же образом вы вызываете Verifiable
методы.
assertEqual |
Утверждайте тот Входные параметры
Аргументы name-value
|
assertFail |
Произведите безусловный отказ утверждения. Подобно Входные параметры
|
assertFalse |
Утверждайте что значение Входные параметры
|
assertNotEqual |
Утверждайте тот Входные параметры
|
assertNotSameHandle |
Утверждайте тот Входные параметры
|
assertReturnsTrue |
Утверждайте тот Входные параметры
|
assertSameHandle |
Утверждайте тот Входные параметры
|
assertThat |
Утверждайте тот Входные параметры
|
assertTrue |
Утверждайте что значение Входные параметры
|
assertError |
Утверждайте тот Входные параметры
Выходные аргументы
|
assertWarning |
Утверждайте тот Входные параметры
Выходные аргументы
|
assertWarningFree |
Утверждайте тот Входные параметры
Выходные аргументы
|
assertGreaterThan |
Утверждайте что все элементы Входные параметры
|
assertGreaterThanOrEqual |
Утверждайте что все элементы Входные параметры
|
assertLessThan |
Утверждайте что все элементы Входные параметры
|
assertLessThanOrEqual |
Утверждайте что все элементы Входные параметры
|
assertEmpty |
Утверждайте тот Входные параметры
|
assertLength |
Утверждайте тот Входные параметры
|
assertNotEmpty |
Утверждайте тот Входные параметры
|
assertNumElements |
Утверждайте тот Входные параметры
|
assertSize |
Утверждайте тот Входные параметры
|
assertClass |
Утверждайте что класс Входные параметры
|
assertInstanceOf |
Утверждайте тот Входные параметры
|
assertMatches |
Утверждайте тот Входные параметры
|
assertSubstring |
Утверждайте тот Входные параметры
|
EventName | Триггер | Данные о событиях | Атрибуты события |
---|---|---|---|
AssertionFailed | Инициированный на провальное утверждение. QualificationEventData объект передается функциям обратного вызова прослушивателя. | matlab.unittest.qualifications.QualificationEventData |
|
AssertionPassed | Инициированный на передающее утверждение. QualificationEventData объект передается функциям обратного вызова прослушивателя. | matlab.unittest.qualifications.QualificationEventData |
|
Протестировать умножение DocPolynom
объекты, сначала добавьте examples
папка к пути поиска файлов и подтверждает это DocPolynom
класс доступен для ваших тестов. Для получения дополнительной информации о DocPolynom
класс, смотрите Полиномы Представления с Классами.
В файле в вашей текущей папке создайте DocPolynomMultiplicationTest
класс, который тестирует умножение DocPolynom
объекты. Получить доступ к DocPolynom
в ваших тестах задайте addDocPolynomClassToPath
метод в TestClassSetup
methods
блок. Используйте PathFixture
экземпляр в рамках метода, чтобы добавить examples
папка, включая DocPolynom
файл определения класса, к пути. Затем используйте утверждение, чтобы подтвердить это, фиксатор сделал DocPolynom
доступный для ваших тестов. Если утверждение перестало работать, среда приводит к сбою Test
методы, не пытаясь запустить их. В противном случае среда запускает Test
методы. Наконец, среда разъединяет фиксатор и восстанавливает путь к его предыдущему состоянию.
classdef DocPolynomMultiplicationTest < matlab.unittest.TestCase properties TextToDisplay = "Equation under test: " end methods (TestClassSetup) function addDocPolynomClassToPath(testCase) import matlab.unittest.fixtures.PathFixture folder = fullfile(matlabroot, ... "help","techdoc","matlab_oop","examples"); testCase.applyFixture(PathFixture(folder)) testCase.assertNotEmpty(?DocPolynom) end end end
Теперь добавьте свои тесты в methods
блокируйтесь с Test
атрибут.
classdef DocPolynomMultiplicationTest < matlab.unittest.TestCase properties TextToDisplay = "Equation under test: " end methods (TestClassSetup) function addDocPolynomClassToPath(testCase) import matlab.unittest.fixtures.PathFixture folder = fullfile(matlabroot, ... "help","techdoc","matlab_oop","examples"); testCase.applyFixture(PathFixture(folder)) testCase.assertNotEmpty(?DocPolynom) end end methods (Test) function test1(testCase) p1 = DocPolynom([1 0 3]); p2 = DocPolynom([5 2]); actual = p1 * p2; expected = DocPolynom([5 2 15 6]); diagnostic = [testCase.TextToDisplay ... "(x^2 + 3) * (5*x + 2) = 5*x^3 + 2*x^2 + 15*x + 6"]; testCase.verifyEqual(actual,expected,diagnostic) end function test2(testCase) p1 = DocPolynom([1 4]); p2 = DocPolynom([2 3]); p3 = DocPolynom([1 0 -1]); actual = p1 * p2 * p3; expected = DocPolynom([2 11 10 -11 -12]); diagnostic = [testCase.TextToDisplay ... "(x + 4) * (2*x + 3) * (x^2 - 1) = 2*x^4 + 11*x^3 + 10*x^2 - 11*x - 12"]; testCase.verifyEqual(actual,expected,diagnostic) end end end
Запустите тесты в DocPolynomMultiplicationTest
класс. В этом примере, обеих из тестовой передачи.
runtests("DocPolynomMultiplicationTest")
Running DocPolynomMultiplicationTest .. Done DocPolynomMultiplicationTest __________
ans = 1×2 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 2 Passed, 0 Failed, 0 Incomplete. 0.38698 seconds testing time.
В зависимости от настройки исполнителя тестов среда тестирования может отобразить диагностику, когда проверка передает или перестала работать. По умолчанию среда отображает диагностику только, когда проверка перестала работать. Можно заменить поведение по умолчанию путем настройки исполнителя тестов. Например, можно использовать DiagnosticsOutputPlugin
экземпляр, чтобы отобразить и провальную и передающую диагностику события.
Чтобы добавить диагностическое сообщение в тест, используйте дополнительный diagnostic
аргумент в любом из методов проверки. Можно задать diagnostic
как массив строк, символьный массив, указатель на функцию или массив matlab.unittest.diagnostics.Diagnostic
объекты.
Содержанием теста является exception safe, когда все отключение фиксатора выполняется с addTeardown
метод TestCase
или Fixture
классы, или когда это выполняется с помощью объектных деструкторов после отказа. Безопасность исключения гарантирует, что непройденный тест не влияет на последующие тесты, даже когда исключение выдается.
Например, этот код не является безопасным исключением. Если тест перестал работать, среда тестирования не закрывает фигуру.
% Not exception safe
f = figure;
testCase.assertEqual(actual,expected)
close(f)
С другой стороны, этот код является безопасным исключением, потому что среда закрывает фигуру независимо от тестового результата.
% Exception safe
f = figure;
testCase.addTeardown(@close,f)
testCase.assertEqual(actual,expected)
Разъединение фиксатора с помощью addTeardown
не гарантирует, что код является безопасным исключением. Этот код не является безопасным исключением, потому что вызов addTeardown
помещается после теста. Если тест перестал работать, среда не может закрыть фигуру.
% Not exception safe
f = figure;
testCase.assertEqual(actual,expected)
testCase.addTeardown(@close,f)
matlab.unittest.qualifications.Verifiable
| matlab.unittest.qualifications.Assumable
| matlab.unittest.qualifications.FatalAssertable
| matlab.unittest.TestCase
| matlab.unittest.qualifications.QualificationEventData
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.