matlab.unittest.constraints.IsEqualTo 클래스
패키지: matlab.unittest.constraints
슈퍼클래스: matlab.unittest.constraints.BooleanConstraint
동일성을 테스트하는 제약 조건
설명
matlab.unittest.constraints.IsEqualTo
클래스는 값의 동일성을 테스트하는 제약 조건을 제공합니다. 비교 세부 정보는 예상 값의 클래스에 따라 다릅니다.
생성
설명
c = matlab.unittest.constraints.IsEqualTo(
는 하나 이상의 이름-값 인수를 사용하여 옵션을 추가로 설정합니다. 예를 들어, expected
,Name,Value
)c = matlab.unittest.constraints.IsEqualTo(expected,"IgnoringCase",true)
는 대/소문자를 무시하는 제약 조건을 만듭니다.
입력 인수
expected
— 예상 값
임의의 값
예상 값으로, 임의의 데이터형 값으로 지정됩니다.
이 인수는 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)
IgnoringCase
— 대/소문자 무시 여부
false
또는 0
(디폴트 값) | true
또는 1
텍스트 값 비교 시 대/소문자 무시 여부로, 숫자형 또는 논리값 0
(false
) 또는 1
(true
)로 지정됩니다. 기본적으로 이 제약 조건은 대/소문자를 구분합니다.
이 인수는 IgnoreCase
속성을 설정합니다.
IgnoringWhitespace
— 공백 무시 여부
false
또는 0
(디폴트 값) | true
또는 1
텍스트 값을 비교할 때 공백 무시 여부로, 숫자형 또는 논리값 0
(false
) 또는 1
(true
)로 지정됩니다. 기본적으로 이 제약 조건은 공백을 무시하지 않습니다. 공백 문자로는 공백(' '
), 폼 피드('\f'
), 새 줄('\n'
), 캐리지 리턴('\r'
), 가로 탭('\t'
), 세로 탭('\v'
)이 있습니다.
이 인수는 IgnoreWhitespace
속성을 설정합니다.
IgnoringFields
— 구조체형 배열 비교 시 무시할 필드
string형 배열 | 문자형 벡터로 구성된 셀형 배열
구조체형 배열 비교 시 무시할 필드로, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 이 제약 조건은 지정된 필드의 값을 비교하지 않습니다.
이 인수는 IgnoredFields
속성을 설정합니다.
예: "IgnoringFields","field1"
Using
— 비교를 위임할 비교 연산자
비교 연산자 클래스의 객체 벡터
비교를 위임할 비교 연산자로, 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]
Within
— 비교에 사용할 허용오차
matlab.unittest.constraints.Tolerance
객체
비교에 사용할 허용오차로, matlab.unittest.constraints.Tolerance
객체로 지정됩니다.
이 인수는 Tolerance
속성을 설정합니다.
예: "Within",matlab.unittest.constraints.AbsoluteTolerance(1)
예: "Within",matlab.unittest.constraints.AbsoluteTolerance(1) | matlab.unittest.constraints.RelativeTolerance(0.1)
속성
Expected
— 예상 값
임의의 값
IgnoreCase
— 대/소문자 무시 여부
false
또는 0
(디폴트 값) | true
또는 1
텍스트 값을 비교할 때 대/소문자 무시 여부로, 논리값 0
(false
) 또는 1
(true
)로 반환됩니다. 기본적으로 이 제약 조건은 대/소문자를 구분합니다.
이 속성은 IgnoringCase
이름-값 인수에 의해 설정됩니다.
특성:
GetAccess | public |
SetAccess | private |
IgnoreWhitespace
— 공백 무시 여부
false
또는 0
(디폴트 값) | true
또는 1
텍스트 값을 비교할 때 공백 무시 여부로, 논리값 0
(false
) 또는 1
(true
)로 반환됩니다. 기본적으로 이 제약 조건은 공백을 무시하지 않습니다.
이 속성은 IgnoringWhitespace
이름-값 인수에 의해 설정됩니다.
특성:
GetAccess | public |
SetAccess | private |
IgnoredFields
— 구조체형 배열 비교 시 무시할 필드
문자형 벡터로 구성된 셀형 배열
구조체형 배열 비교 시 무시할 필드로, 문자형 벡터로 구성된 셀형 배열로 반환됩니다.
이 속성은 IgnoringFields
이름-값 인수에 의해 설정됩니다.
특성:
GetAccess | public |
SetAccess | private |
Comparator
— 비교를 위임할 비교 연산자
비교 연산자 클래스의 객체 행 벡터
비교를 위임할 비교 연산자로, matlab.unittest.constraints
패키지에서 비교 연산자로 분류되는 클래스의 객체 행 벡터로 반환됩니다.
이 속성은 Using
이름-값 인수에 의해 설정됩니다.
특성:
GetAccess | public |
SetAccess | private |
Tolerance
— 비교에 사용할 허용오차
matlab.unittest.constraints.Tolerance
객체
비교에 사용할 허용오차로, 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*3
과 0.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.Field
와 s2.Field
의 값이 서로 다르더라도, 비교 연산자가 s1
과 s2
의 퍼블릭 속성만 검사하므로 테스트가 통과합니다.
testCase.verifyThat(s1,IsEqualTo(s2, ... "Using",PublicPropertyComparator.supportingAllValues))
Verification passed.
Student
객체를 새로 만들고 s1
과 비교합니다. s1.Name
과 s3.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.
세부 정보
비교 세부 정보
이 표에서는 예상 값의 다양한 클래스에 대해 IsEqualTo
제약 조건이 어떻게 동작하는지 설명합니다.
예상 값 | 비교 세부 정보 |
---|---|
논리형 배열 | 이 제약 조건은 실제 값과 예상 값의 클래스, 크기, 희소성이 같고 대응하는 요소들이 동일한 경우 충족됩니다. |
숫자형 배열 | 허용오차를 지정하지 않으면 이 제약 조건은 실제 값과 예상 값의 클래스, 크기, 실수/복소수 여부, 희소성이 같고 허용오차를 지정하면 이 제약 조건은 먼저 실제 값과 예상 값의 클래스, 크기, 희소성이 같은지 검사합니다. 이러한 검사 중 하나라도 실패하는 경우 제약 조건은 충족되지 않습니다. 검사 결과는 통과이지만 실수/복소수 여부 검사 또는 |
string형 배열, 문자형 배열 또는 문자형 배열로 구성된 셀형 배열 | 이 제약 조건은 실제 값과 예상 값이 클래스와 크기가 동일한 텍스트 값이고 대응하는 요소들이 동일한 경우 충족됩니다. 대/소문자, 공백 문자 또는 둘 다를 무시하도록 제약 조건을 설정할 수 있습니다. |
셀형 배열 | 이 제약 조건은 실제 값과 예상 값이 크기가 동일한 셀형 배열이고 해당 셀형 배열 요소가 제약 조건도 만족할 경우 충족됩니다. 이 제약 조건은 셀형 배열에 포함된 값을 비교할 때 재귀적으로 동작을 수행합니다. 중첩된 값의 동일성이 모두 확인될 때까지 재귀가 계속됩니다. |
구조체형 배열 | 이 제약 조건은 실제 값과 예상 값이 크기와 필드가 동일한 구조체형 배열이고 해당 필드의 값이 제약 조건도 만족할 경우 충족됩니다. 특정 필드를 무시하도록 제약 조건을 설정할 수 있습니다. 이 제약 조건은 구조체형 배열에 포함된 값을 비교할 때 재귀적으로 동작을 수행합니다. 중첩된 값의 동일성이 모두 확인될 때까지 재귀가 계속됩니다. |
사전 | 이 제약 조건은 실제 값과 예상 값이 키가 동일한 사전이고 해당 키에 할당된 값이 제약 조건도 만족할 경우 충족됩니다. 이 제약 조건은 사전에 포함된 값을 비교할 때 재귀적으로 동작을 수행합니다. 중첩된 값의 동일성이 모두 확인될 때까지 재귀가 계속됩니다. |
table형 배열 | 이 제약 조건은 실제 값과 예상 값이 크기와 속성값이 동일한 table형 배열이고 해당 테이블 변수가 제약 조건도 만족할 경우 충족됩니다. 이 제약 조건은 table형 배열에 포함된 값을 비교할 때 재귀적으로 동작을 수행합니다. 중첩된 값의 동일성이 모두 확인될 때까지 재귀가 계속됩니다. |
MATLAB® 또는 Java® 객체 배열 | 허용오차를 지정하지 않으면 이 제약 조건은 실제 값과 예상 값이 클래스와 크기가 같은 객체 배열이고 모든 속성에 대해 동일한 값을 가지는 경우 충족됩니다. 동일성을 결정할 수 없는 경우에는 제약 조건이 허용오차를 지정하면 이 제약 조건은 먼저 위의 설명과 같이 객체 배열의 동일성을 검사합니다. 검사를 통과하면 제약 조건이 충족됩니다. 그렇지 않으면 이 제약 조건은 실제 값과 예상 값의 클래스, 크기, 희소성이 같은지 검사합니다. 이러한 검사 중 하나라도 실패하는 경우 제약 조건은 충족되지 않습니다. 검사를 통과하면 제약 조건은 비교를 허용오차에 위임합니다. |
버전 내역
R2013a에 개발됨R2022b: 테스트에서 사전을 비교함
IsEqualTo
제약 조건을 사용하여 MATLAB 사전을 비교할 수 있습니다.
R2019a: 테이블 변수가 일관되게 비교됨
IsEqualTo
제약 조건은 테이블 변수의 크기와 유형을 일관되게 비교합니다. 예를 들어, 실제 테이블 변수와 예상 테이블 변수의 유형이 서로 다르므로 이 테스트는 실패합니다.
import matlab.unittest.TestCase import matlab.unittest.constraints.IsEqualTo testCase = TestCase.forInteractiveUse; act = table(zeros(0,2)); exp = table({}); testCase.verifyThat(act,IsEqualTo(exp))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsEqualTo failed. --> Path to failure: <Value>.Var1 --> CellComparator failed. --> Classes do not match. Actual Class: double Expected Class: cell Actual Value: 0×2 empty double matrix Expected Value: 0×0 empty cell array Actual Value: 0×1 empty table Expected Value: 0×1 empty table
이전 릴리스에서는 테이블에 행이 없는 경우 제약 조건이 테이블 변수를 비교하지 않으므로 테스트가 통과합니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)