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)
创建一个不区分大小写的约束。
名称-值参数
以 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
属性。
向其委托比较的比较器,指定为由 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)
属性
比较文本值时是否忽略大小写,以逻辑值 0
(false
) 或 1
(true
) 形式返回。默认情况下,约束区分大小写。
此属性由 IgnoringCase
名称-值参量设置。
属性:
GetAccess | public |
SetAccess | private |
比较文本值时是否忽略空白,以逻辑值 0
(false
) 或 1
(true
) 形式返回。默认情况下,约束区分空白字符。
此属性由 IgnoringWhitespace
名称-值参量设置。
属性:
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*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;
创建两个 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
约束用于不同类的预期值时的行为。
预期值 | 比较详细信息 |
---|---|
逻辑数组 | 如果实际值和预期值具有相同的类、大小和稀疏性,并且它们对应的元素相等,则满足该约束。 |
数值数组 | 当不指定容差时,如果实际值和预期值具有相同的类、大小、复/实性和稀疏性,并且 当指定容差时,约束首先检查实际值和预期值的类、大小和稀疏性是否相等。如果这些检查中的任何一项失败,则不满足该约束。如果这些检查都通过,但复/实性检查或 |
字符串数组、字符数组或字符数组元胞数组 | 如果实际值和预期值是具有相同的类和大小的文本值,并且它们对应的元素相等,则满足该约束。您可以将该约束设置为忽略大小写和/或空白字符。 |
元胞数组 | 如果实际值和预期值是大小相同的元胞数组,并且对应的元胞数组元素也满足约束,则满足该约束。 当比较元胞数组中包含的值时,约束以递归方式运算。递归会一直继续,直到检查了所有嵌套值的相等性为止。 |
结构体数组 | 如果实际值和预期值是具有相同大小和字段的结构体数组,并且对应字段中的值也满足约束,则满足该约束。您可以将约束设置为忽略某些字段。 当比较结构体数组中包含的值时,约束以递归方式运算。递归会一直继续,直到检查了所有嵌套值的相等性为止。 |
字典 | 如果实际值和预期值是具有相同键的字典,并且分配给对应键的值也满足约束,则表示满足该约束。 当比较字典中包含的值时,约束以递归方式运算。递归会一直继续,直到检查了所有嵌套值的相等性为止。 |
表数组 | 如果实际值和预期值是具有相同大小和属性值的表数组,并且对应的表变量也满足约束,则满足该约束。 当比较表数组中包含的值时,约束以递归方式运算。递归会一直继续,直到检查了所有嵌套值的相等性为止。 |
MATLAB® 或 Java® 对象数组 | 当不指定容差时,约束首先检查实际值和预期值是否为具有相同类和大小的对象数组,并且所有属性的值都相等。如果是,则满足约束。否则,约束调用 当指定容差时,约束首先检查对象数组是否相等,如上所述。如果检查通过,则满足该约束。否则,约束检查实际值和预期值的类、大小和稀疏性是否相等。如果这些检查中的任何一项失败,则不满足该约束。如果通过,约束将比较委托给容差。 |
版本历史记录
在 R2013a 中推出您可以使用 IsEqualTo
约束来比较 MATLAB 字典。
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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)