Main Content

matlab.unittest.constraints.ObjectComparator 클래스

패키지: matlab.unittest.constraints

MATLAB 객체 또는 Java 객체용 비교 연산자

생성

ObjectComparator는 MATLAB® 객체 또는 Java® 객체에 대한 비교 연산자를 만듭니다. isequalntrue를 반환하면 비교 연산자를 충족합니다. 그러나, 예상 값의 클래스가 isequaln 메서드가 아니라 isequal 메서드를 정의하는 경우 ObjectComparatorisequaln 대신 이 메서드를 사용하여 비교합니다. 이때, 이 메서드가 가시적 메서드인지 숨겨진 메서드인지는 상관이 없습니다.

ObjectComparator('Within',tolObj)는 지정된 허용오차를 사용하여 비교 연산자를 만듭니다. ObjectComparatorisequaln 또는 isequal 호출이 true를 반환하는지 먼저 확인합니다. 확인 결과가 실패이면 ObjectComparator는 실제 값과 예상 값을 비교하여 클래스, 크기 및 희소성이 동일한지 확인합니다. 확인 결과가 통과이면 ObjectComparator는 제공된 허용오차 tolObj와 비교합니다. 이 허용오차 값은 실제 값과 예상 값의 클래스와 동일해야 합니다.

입력 인수

tolObj

Tolerance 인스턴스

속성

Tolerance

비교 연산자를 생성할 때 사용되는 특정 허용오차로, tolObj 입력 인수의 matlab.unittest.constraints.Tolerance 객체로 지정됩니다.

복사 의미 체계

값입니다. 값 클래스가 복사 작업에 미치는 영향에 대한 내용은 객체 복사 항목을 참조하십시오.

예제

모두 축소

작업 폴더의 파일 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 클래스는 MATLAB과 Java 객체를 포함하여 여러 유형의 데이터 간의 동일성을 테스트하는 제약 조건을 만듭니다.

    IsEqualTo 클래스가 수행하는 비교를 재정의해야 하는 경우 ObjectComparator 인스턴스를 사용하십시오. 예를 들어, 실제 값과 예상 값이 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에 개발됨