matlab.unittest.constraints.ObjectComparator class

Пакет: matlab.unittest.constraints

Компаратор для объектов MATLAB или Java

Конструкция

ObjectComparator создает компаратор для MATLAB® или Java® объекты. Компаратору удовлетворяют если isequaln возвращает true. Однако, если класс ожидаемого значения задает isequal метод, или видимый или скрытый, но не isequaln метод, ObjectComparator использование, что метод для сравнения вместо isequaln.

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

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

tolObj

Tolerance экземпляр

Свойства

Tolerance

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

Примеры

свернуть все

В файле, MyInt.m, в вашей рабочей папке создайте подкласс int8.

classdef MyInt < int8
    methods
        function i = MyInt(value)
            i@int8(value);
        end
    end
end

В командной строке создайте тест для интерактивного тестирования.

import matlab.unittest.TestCase
import matlab.unittest.constraints.ObjectComparator
import matlab.unittest.constraints.IsEqualTo

testCase = TestCase.forInteractiveUse;

Используйте ObjectComparator протестировать это два экземпляра MyInt равны друг другу.

testCase.verifyThat(MyInt(10), ...
    IsEqualTo(MyInt(10), 'Using', ObjectComparator))
Interactive verification passed.

Протестируйте равенство двух экземпляров MyInt это создается с различными входными значениями.

testCase.verifyThat(MyInt(11), ...
    IsEqualTo(MyInt(10), 'Using', ObjectComparator))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IsEqualTo failed.
--> ObjectComparator failed.
    --> The objects are not equal using "isequal".

Actual Object:
      MyInt:
    
      int8 data:
       11
Expected Object:
      MyInt:
    
      int8 data:
       10

Один экземпляр MyInt имеет значение 11, и другой имеет значение 10.

Повторите тест и укажите, что значения должны быть равными в абсолютной погрешности 1.

import matlab.unittest.constraints.AbsoluteTolerance

testCase.verifyThat(MyInt(11), IsEqualTo(MyInt(10), ...
    'Using', ObjectComparator('Within', AbsoluteTolerance(MyInt(1)))))
Interactive verification passed.

Советы

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

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

    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.ObjectComparator
          
    exp = 5; 
    act = exp;
    
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    testCase.verifyThat(act,IsEqualTo(exp,'Using',ObjectComparator))
    

Введенный в R2013a