Main Content

matlab.unittest.constraints.ObjectComparator 클래스

네임스페이스: matlab.unittest.constraints

MATLAB 객체 배열 또는 Java 객체 배열에 대한 비교 연산자

설명

matlab.unittest.constraints.ObjectComparator 클래스는 MATLAB® 객체 배열 또는 Java® 객체 배열에 대한 비교 연산자를 제공합니다. 테스트에 이 비교 연산자를 사용하려면 ObjectComparator 인스턴스를 만들고 IsEqualTo 제약 조건 생성자의 Using 이름-값 인수의 값으로 지정합니다.

생성

설명

예제

c = matlab.unittest.constraints.ObjectComparator는 MATLAB 객체 배열 또는 Java 객체 배열에 대한 비교 연산자를 만듭니다. 이 비교 연산자는 실제 값과 예상 값이 클래스와 크기가 같은 객체 배열이고 모든 속성에 대해 동일한 값을 가지는 경우 충족됩니다. 동일성을 결정할 수 없는 경우에는 비교 연산자가 isequaln 또는 isequal을 호출합니다. (예상 값의 클래스가 isequaln 메서드를 정의하는 경우 비교 연산자는 isequaln을 호출합니다. 그렇지 않으면 isequal을 호출합니다.) 호출이 true를 반환하면 비교 연산자가 충족됩니다.

예제

c = matlab.unittest.constraints.ObjectComparator("Within",tol)은 비교에 지정된 허용오차를 사용합니다. 이 구문을 사용하면 위에서 설명한 대로 이 비교 연산자는 먼저 동일성 여부를 검사합니다. 검사를 통과하면 비교 연산자가 충족됩니다. 그렇지 않으면 이 비교 연산자는 실제 값과 예상 값의 클래스, 크기, 희소성이 같은지 검사합니다. 이러한 검사 중 하나라도 실패하는 경우 비교 연산자는 충족되지 않습니다. 검사를 통과하면 비교 연산자가 비교를 tol에 위임합니다.

입력 인수

모두 확장

허용오차로, matlab.unittest.constraints.Tolerance 객체로 지정됩니다.

이 인수는 Tolerance 속성을 설정합니다.

예: matlab.unittest.constraints.AbsoluteTolerance(MyInt(1))

속성

모두 확장

허용오차로, matlab.unittest.constraints.Tolerance 객체로 반환됩니다.

이 속성은 tol 입력 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

예제

모두 축소

ObjectComparator 클래스를 사용하여 실제 값과 예상 값을 비교합니다.

현재 폴더에 있는 MyInt.m이라는 파일에서 int8 클래스의 서브클래스를 만듭니다.

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

이 예제에서 사용되는 클래스를 가져옵니다.

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

대화형 방식 테스트를 위한 테스트 케이스를 생성합니다.

testCase = TestCase.forInteractiveUse;

동일한 입력값으로 생성된 두 MyInt 객체를 ObjectComparator 인스턴스를 사용하여 비교합니다. 테스트가 통과합니다.

testCase.verifyThat(MyInt(10),IsEqualTo(MyInt(10), ...
    "Using",ObjectComparator))
Verification passed.

서로 다른 입력값으로 생성된 두 MyInt 객체를 비교합니다. 테스트가 실패합니다.

testCase.verifyThat(MyInt(11),IsEqualTo(MyInt(10), ...
    "Using",ObjectComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> ObjectComparator failed.
        --> The objects are not equal using "isequaln".
        
        Actual Value:
          MyInt:
        
          int8 data:
           11
        Expected Value:
          MyInt:
        
          int8 data:
           10
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingObjectComparatorExample.m (CompareValuesUsingObjectComparatorExample) at 30

테스트가 통과하도록 하기 위해, 값이 절대 허용오차 1 내에서 동일해야 한다고 지정합니다. 허용오차 값은 실제 값과 예상 값의 클래스와 동일해야 합니다.

testCase.verifyThat(MyInt(11),IsEqualTo(MyInt(10), ...
    "Using", ObjectComparator("Within",AbsoluteTolerance(MyInt(1)))))
Verification passed.

  • 대부분의 경우에는 ObjectComparator 인스턴스를 사용할 필요가 없습니다. IsEqualTo 클래스는 MATLAB 객체 배열과 Java 객체 배열을 포함하여 다양한 데이터형의 동일성을 테스트하는 제약 조건을 만듭니다.

    IsEqualTo 클래스가 수행하는 비교를 재정의해야 하는 경우 ObjectComparator 인스턴스를 사용하십시오. 예를 들어, 실제 값과 예상 값이 MATLAB 객체 배열이 아닌 경우 비교가 실패하도록 하려면 테스트에 ObjectComparator 인스턴스를 포함하십시오. ObjectComparator를 사용하여 셀형 배열, 구조체, 사전, 테이블 그리고 MATLAB 객체 배열의 퍼블릭 속성에 포함된 값을 제한할 수도 있습니다. 다음 예제에서는 실제 값과 예상 값이 숫자형 스칼라이므로 MATLAB이 오류를 발생시킵니다.

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

버전 내역

R2013a에 개발됨