Main Content

matlab.unittest.constraints.IsEqualTo 클래스

네임스페이스: matlab.unittest.constraints
슈퍼클래스: matlab.unittest.constraints.BooleanConstraint

동일성을 테스트하는 제약 조건

설명

matlab.unittest.constraints.IsEqualTo 클래스는 값의 동일성을 테스트하는 제약 조건을 제공합니다. 비교 세부 정보는 예상 값의 클래스에 따라 다릅니다.

생성

설명

예제

c = matlab.unittest.constraints.IsEqualTo(expected)는 예상 값의 동일성을 테스트하는 제약 조건을 만듭니다.

예제

c = matlab.unittest.constraints.IsEqualTo(expected,Name,Value)는 하나 이상의 이름-값 인수를 사용하여 옵션을 추가로 설정합니다. 예를 들어, c = matlab.unittest.constraints.IsEqualTo(expected,"IgnoringCase",true)는 대/소문자를 무시하는 제약 조건을 만듭니다.

입력 인수

모두 확장

예상 값으로, 임의의 데이터형 값으로 지정됩니다.

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

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: c = matlab.unittest.constraints.IsEqualTo(expected,IgnoringCase=true)

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: c = matlab.unittest.constraints.IsEqualTo(expected,"IgnoringCase",true)

텍스트 값 비교 시 대/소문자 무시 여부로, 숫자형 또는 논리값 0(false) 또는 1(true)로 지정됩니다. 기본적으로 이 제약 조건은 대/소문자를 구분합니다.

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

텍스트 값을 비교할 때 공백 무시 여부로, 숫자형 또는 논리값 0(false) 또는 1(true)로 지정됩니다. 기본적으로 이 제약 조건은 공백을 무시하지 않습니다. 공백 문자로는 공백(' '), 폼 피드('\f'), 새 줄('\n'), 캐리지 리턴('\r'), 가로 탭('\t'), 세로 탭('\v')이 있습니다.

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

구조체형 배열 비교 시 무시할 필드로, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 이 제약 조건은 지정된 필드의 값을 비교하지 않습니다.

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

예: "IgnoringFields","field1"

비교를 위임할 비교 연산자로, matlab.unittest.constraints 네임스페이스에서 비교 연산자로 분류되는 클래스의 객체 벡터로 지정됩니다.

비교 연산자와 IsEqualTo 제약 조건에 공통된 이름-값 인수가 있는 경우 IsEqualTo에 전달된 값이 비교 연산자에 전달된 해당 값을 재정의합니다. 예를 들어, IsEqualTo 생성자의 IgnoringCase 이름-값 인수 값이 StringComparator 생성자에 지정된 값을 재정의하므로 이 테스트는 통과합니다.

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.StringComparator

testCase = TestCase.forInteractiveUse;
testCase.verifyThat("Text",IsEqualTo("text","IgnoringCase",true, ...
    "Using",StringComparator("IgnoringCase",false)))

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

예: "Using",matlab.unittest.constraints.NumericComparator

예: "Using",matlab.unittest.constraints.PublicPropertyComparator("Recursively",true)

예: "Using",[matlab.unittest.constraints.LogicalComparator matlab.unittest.constraints.NumericComparator]

비교에 사용할 허용오차로, matlab.unittest.constraints.Tolerance 객체로 지정됩니다.

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

예: "Within",matlab.unittest.constraints.AbsoluteTolerance(1)

예: "Within",matlab.unittest.constraints.AbsoluteTolerance(1) | matlab.unittest.constraints.RelativeTolerance(0.1)

속성

모두 확장

예상 값으로, 임의의 데이터형 값으로 반환됩니다.

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

특성:

GetAccess
public
SetAccess
immutable

텍스트 값을 비교할 때 대/소문자 무시 여부로, 논리값 0(false) 또는 1(true)로 반환됩니다. 기본적으로 이 제약 조건은 대/소문자를 구분합니다.

이 속성은 IgnoringCase 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

텍스트 값을 비교할 때 공백 무시 여부로, 논리값 0(false) 또는 1(true)로 반환됩니다. 기본적으로 이 제약 조건은 공백을 무시하지 않습니다.

이 속성은 IgnoringWhitespace 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

구조체형 배열 비교 시 무시할 필드로, 문자형 벡터로 구성된 셀형 배열로 반환됩니다.

이 속성은 IgnoringFields 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

비교를 위임할 비교 연산자로, matlab.unittest.constraints 네임스페이스에서 비교 연산자로 분류되는 클래스의 객체 행 벡터로 반환됩니다.

이 속성은 Using 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

비교에 사용할 허용오차로, matlab.unittest.constraints.Tolerance 객체로 반환됩니다.

이 속성은 Within 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

예제

모두 축소

부동소수점 연산의 결과를 테스트합니다.

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.RelativeTolerance

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

testCase = TestCase.forInteractiveUse;

0.1*30.3을 비교합니다. 이 테스트는 부동소수점 연산방식의 반올림 오차로 인해 실패합니다.

actual = 0.1*3;
expected = 0.3;
testCase.verifyThat(actual,IsEqualTo(expected))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> NumericComparator failed.
        --> The numeric values are not equal using "isequaln".
        --> Failure table:
                Actual    Expected           Error               RelativeError    
                ______    ________    ____________________    ____________________
                                                                                  
                 0.3        0.3       5.55111512312578e-17    1.85037170770859e-16
        
        Actual Value:
           0.300000000000000
        Expected Value:
           0.300000000000000
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestFloatingPointNumbersExample.m (TestFloatingPointNumbersExample) at 19

값이 상대 허용오차 eps 내에 있는지 테스트합니다. 테스트가 통과합니다.

testCase.verifyThat(actual,IsEqualTo(expected, ...
    "Within",RelativeTolerance(eps)))
Verification passed.

IsEqualTo 제약 조건을 사용하여 텍스트 값을 비교합니다.

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

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

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

testCase = TestCase.forInteractiveUse;

두 문자열을 결합하고 결과를 확인합니다. 테스트가 통과합니다.

actual = "Milky " + "Way";
expected = "Milky Way";
testCase.verifyThat(actual,IsEqualTo(expected))
Verification passed.

실제 값을 "Milky way "로 변경합니다. 실제 값과 예상 값이 더 이상 같지 않으므로 테스트가 실패합니다.

actual = "Milky way ";
testCase.verifyThat(actual,IsEqualTo(expected))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> StringComparator failed.
        --> The strings are not equal.
        
        Actual Value:
            "Milky way "
        Expected Value:
            "Milky Way"
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareStringsExample.m (CompareStringsExample) at 22

테스트가 통과하도록 하기 위해, 대/소문자와 공백 문자를 무시합니다.

testCase.verifyThat(actual,IsEqualTo(expected, ...
    "IgnoringCase",true,"IgnoringWhitespace",true))
Verification passed.

모든 데이터형을 지원하는 비교 연산자를 사용하여 두 객체의 퍼블릭 속성을 비교합니다.

현재 폴더에 있는 Student.m이라는 파일에서 Student 클래스를 만듭니다. 이 클래스는 두 개의 퍼블릭 속성과 하나의 프라이빗 속성을 가집니다.

classdef Student
    properties (SetAccess=immutable)
        Name
        Age
    end
    properties (Access=private)
        Field
    end
    methods
        function obj = Student(name,age,field)
            arguments
                name = "";
                age = [];
                field = "";
            end
            obj.Name = name;
            obj.Age = age;
            obj.Field = field;
        end
    end
end

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

import matlab.unittest.TestCase
import matlab.unittest.constraints.IsEqualTo
import matlab.unittest.constraints.PublicPropertyComparator

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

testCase = TestCase.forInteractiveUse;

2개의 Student 객체를 만들고 IsEqualTo 제약 조건을 사용하여 이 둘을 비교합니다. 이 예제에서는 프라이빗 속성의 값이 서로 다르기 때문에 테스트가 실패합니다.

s1 = Student("Mary Jones",20,"physics");
s2 = Student("Mary Jones",20,"biology");
testCase.verifyThat(s1,IsEqualTo(s2))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> ObjectComparator failed.
        --> The objects are not equal using "isequaln".
        
        Actual Value:
          Student with properties:
        
            Name: "Mary Jones"
             Age: 20
        Expected Value:
          Student with properties:
        
            Name: "Mary Jones"
             Age: 20
    ------------------
    Stack Information:
    ------------------
    In C:\work\ComparePublicPropertiesExample.m (ComparePublicPropertiesExample) at 29

PublicPropertyComparator 인스턴스를 사용하여 테스트를 반복합니다. Name 속성과 Age 속성은 서로 다른 유형이므로 모든 데이터형을 지원하는 비교 연산자를 사용하여 비교를 수행합니다. s1.Fields2.Field의 값이 서로 다르더라도, 비교 연산자가 s1s2의 퍼블릭 속성만 검사하므로 테스트가 통과합니다.

testCase.verifyThat(s1,IsEqualTo(s2, ...
    "Using",PublicPropertyComparator.supportingAllValues))
Verification passed.

Student 객체를 새로 만들고 s1과 비교합니다. s1.Names3.Name의 값이 서로 다르므로 테스트가 실패합니다.

s3 = Student("mary jones",20,"chemistry");
testCase.verifyThat(s1,IsEqualTo(s3, ...
    "Using",PublicPropertyComparator.supportingAllValues))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> Path to failure: <Value>.Name
        --> StringComparator failed.
            --> The strings are not equal.
            
            Actual Value:
                "Mary Jones"
            Expected Value:
                "mary jones"
    
    Actual Value:
      Student with properties:
    
        Name: "Mary Jones"
         Age: 20
    Expected Value:
      Student with properties:
    
        Name: "mary jones"
         Age: 20
    ------------------
    Stack Information:
    ------------------
    In C:\work\ComparePublicPropertiesExample.m (ComparePublicPropertiesExample) at 44

테스트가 통과하도록 하기 위해, 대/소문자를 무시하는 비교 연산자를 사용합니다.

testCase.verifyThat(s1,IsEqualTo(s3, ...
    "Using",PublicPropertyComparator.supportingAllValues( ...
    "IgnoringCase",true)))
Verification passed.

또는 비교 연산자가 비교 중에 Name 속성을 무시하도록 설정할 수 있습니다.

testCase.verifyThat(s1,IsEqualTo(s3, ...
    "Using",PublicPropertyComparator.supportingAllValues( ...
    "IgnoringProperties","Name")))
Verification passed.

세부 정보

모두 확장

버전 내역

R2013a에 개발됨

모두 확장