matlab.unittest.constraints.NumericComparator class

Пакет: matlab.unittest.constraints

Компаратор для типов числовых данных

Конструкция

NumericComparator создает компаратор для типов числовых данных. Компаратору удовлетворяют, имеют ли входные параметры тот же класс с эквивалентным размером, сложностью, и разреженностью и встроенным isequaln функция возвращает true.

NumericComparator('Within',tolObj) создает компаратор с помощью заданного допуска. В этом случае, NumericComparator первые проверки на эквивалентный класс, размер и разреженность фактических и ожидаемых значений. Если эти проверки перестали работать, компаратору не удовлетворяют. Если эти проверки передача и isequaln или сложность проверяет сбои, NumericComparator сравнение делегатов с предоставленным допуском, tolObj.

Входные параметры

tolObj

matlab.unittest.constraints.Tolerance экземпляр

Свойства

Tolerance

Определенный допуск используется в конструкции компаратора в виде Tolerance объект в tolObj входной параметр

Примеры

свернуть все

Создайте контрольный пример для интерактивного тестирования.

import matlab.unittest.TestCase
import matlab.unittest.constraints.NumericComparator
import matlab.unittest.constraints.IsEqualTo

testCase = TestCase.forInteractiveUse;

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

testCase.verifyThat(1.618, IsEqualTo(1.618,...
    'Using', NumericComparator))
Verification passed.

Проверьте тот (1+sqrt(5))/2 равно 1.618.

testCase.verifyThat((1+sqrt(5))/2, IsEqualTo(1.618, ...
    'Using', NumericComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> NumericComparator failed.
        --> The numeric values are not equal using "isequaln".
        --> Failure table:
                     Actual         Expected           Error               RelativeError    
                ________________    ________    ____________________    ____________________
                1.61803398874989     1.618      3.39887498947977e-05    2.10066439399244e-05
        
        Actual Value:
           1.618033988749895
        Expected Value:
           1.618000000000000

Перетест с помощью относительной погрешности 0.25%.

import matlab.unittest.constraints.RelativeTolerance

testCase.verifyThat((1+sqrt(5))/2, IsEqualTo(1.618, ...
    'Using', NumericComparator('Within', RelativeTolerance(0.0025))))
Verification passed.

Советы

  • В большинстве случаев вы не обязаны использовать NumericComparator объект. IsEqualTo класс создает ограничение, чтобы протестировать на равенство между данными различных типов, включая числовые значения.

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

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.NumericComparator
          
    exp = {1,2,3}; 
    act = exp;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(act,IsEqualTo(exp,'Using',NumericComparator))
    

Введенный в R2013a