exponenta event banner

verifyClass

Класс: matlab.unittest.qualifications.Verifable
Пакет: matlab.unittest.qualifications

Проверить точный класс указанного значения

Синтаксис

verifyClass(verifiable,actual,className)
verifyClass(verifiable,actual,metaClass)
verifyClass(___,diagnostic)

Описание

verifyClass(verifiable,actual,className) проверяет, что actual - значение MATLAB ®, класс которого является классом, указанным className.

verifyClass(verifiable,actual,metaClass) проверяет, что actual - значение MATLAB, класс которого является классом, указанным meta.class случай metaClass. Экземпляр должен быть точным совпадением классов. Использовать verifyInstanceOf для проверки включения в иерархию классов.

verifyClass(___,diagnostic) также связывает диагностическую информацию в diagnostic с квалификацией. В зависимости от конфигурации тестового питателя платформа тестирования может отображать диагностику при прохождении или сбое квалификации. По умолчанию инфраструктура отображает диагностику только при сбое квалификации. Поведение по умолчанию можно переопределить, настроив тестовый питатель. Например, используйте DiagnosticsOutputPlugin для отображения диагностики сбоев и прохождения событий.

Входные аргументы

verifiable

matlab.unittest.TestCase экземпляр, который используется для прохождения или неуспешного завершения проверки в сочетании с тестовой исполняемой платформой.

actual

Тестируемое значение.

className

Имя класса, указанное как символьный вектор.

metaClass

Экземпляр meta.class.

diagnostic

Диагностическая информация, относящаяся к квалификации, указана как одно из следующих:

  • строковый массив

  • символьный массив

  • дескриптор функции

  • matlab.unittest.diagnostics.Diagnostic объект

Диагностические значения могут быть нескалярными. Дополнительные сведения см. в разделе matlab.unittest.diagnostics.Diagnostic.

Примеры

развернуть все

Эти интерактивные тесты проверяют класс номера, 5.

Создать TestCase и тестируемое значение.

testCase = matlab.unittest.TestCase.forInteractiveUse;
actvalue = 5;

Проверить класс actvalue является двойным.

verifyClass(testCase, actvalue, 'double');
Interactive verification passed.

Проверить класс actvalue является char.

verifyClass(testCase, actvalue, 'char');
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyClass failed.
--> The value's class is incorrect.
    
    Actual Class:
        double
    Expected Class:
        char

Actual double:
         5

Тест завершается неуспешно.

Эти интерактивные тесты проверяют дескрипторы функций, указанные как экземпляр meta.class, ?function_handle.

Создать TestCase объект.

testCase = matlab.unittest.TestCase.forInteractiveUse;

Создайте дескриптор функции.

fh = @sin;
verifyClass(testCase, fh, ?function_handle);
Interactive verification passed.

Проверьте имя функции.

fh = 'sin';
verifyClass(testCase, fh, ?function_handle);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyClass failed.
--> The value's class is incorrect.
    
    Actual Class:
        char
    Expected Class:
        function_handle

Actual char:
    sin

Тест завершается неуспешно.

Убедитесь, что производный класс не совпадает с базовым.

Создание класса, BaseExample.

classdef BaseExample
end

Создание производного класса, DerivedExample.

classdef DerivedExample < BaseExample
end

Убедитесь, что классы не равны.

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyClass(testCase, DerivedExample(), ?BaseExample);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyClass failed.
--> The value's class is incorrect.
    
    Actual Class:
        DerivedExample
    Expected Class:
        BaseExample

Actual DerivedExample:
      DerivedExample with no properties.

Тест завершается неуспешно.

Использовать verifyClass для тестирования add5 функция возвращает double значение.

Функция тестирования установки:

type add5.m
function res = add5(x)
% ADD5 Increment input by 5.
if ~isa(x,'numeric')
    error('add5:InputMustBeNumeric','Input must be numeric.')
end
res = x + 5;
end

TestCase класс, содержащий методы испытаний:

type Add5Test.m
classdef Add5Test < matlab.unittest.TestCase
    methods (Test)
        function testDoubleOut(testCase)
            actOutput = add5(1);
            testCase.verifyClass(actOutput,'double')
        end
        function testNonNumericInput(testCase)
            testCase.verifyError(@()add5('0'),'add5:InputMustBeNumeric')
        end
    end
end

Создание набора тестов из Add5Test файл класса.

suite = matlab.unittest.TestSuite.fromFile('Add5Test.m')
suite = 
  1x2 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

Запустите тесты.

result = run(suite);
Running Add5Test
..
Done Add5Test
__________

Совет

  • Метод функционально эквивалентен следующим методам:

    import matlab.unittest.constraints.IsOfClass;
    verifiable.verifyThat(actual, IsOfClass(className));
    verifiable.verifyThat(actual, IsOfClass(metaClass));
    

    Существует больше функциональных возможностей при использовании IsOfClass ограничение непосредственно через verifyThat.

  • Используйте условия проверки для создания и записи отказов без создания исключения. Так как проверки не вызывают исключений, все содержимое теста выполняется до завершения даже при возникновении ошибок проверки. Как правило, проверки являются основной квалификацией для единичного теста, поскольку они обычно не требуют раннего выхода из теста. Используйте другие типы квалификации для проверки на нарушение предварительных условий или неправильной настройки теста. В качестве альтернативы,

    • Для проверки соответствия среды тестирования предварительным условиям, которые в противном случае не приведут к сбою теста, используйте квалификационные требования. Предполагаемые отказы приводят к отфильтрованным тестам, и платформа тестирования помечает тесты как Incomplete. Дополнительные сведения см. в разделе matlab.unittest.qualifications.Assumable.

    • Используйте условия утверждения, когда условие отказа аннулирует остальную часть текущего содержимого теста, но не препятствует надлежащему выполнению последующих методов тестирования. Сбой в точке утверждения делает текущий метод тестирования неуспешным и неполным. Дополнительные сведения см. в разделе matlab.unittest.qualifications.Assertable.

    • Используйте условия неустранимого утверждения, чтобы прервать тестовый сеанс при сбое. Эти требования полезны, когда режим отказа настолько фундаментален, что нет смысла продолжать тестирование. Эти требования также полезны, когда отрыв приспособления не восстанавливает состояние MATLAB правильно, и предпочтительно прервать тестирование и начать новую сессию. Дополнительные сведения см. в разделе matlab.unittest.qualifications.FatalAssertable.

Представлен в R2013a