Main Content

matlab.unittest.constraints.StringComparator 类

命名空间: matlab.unittest.constraints

字符串数组、字符数组或包含字符数组的元胞数组的比较器

描述

matlab.unittest.constraints.StringComparator 类提供用于比较字符串数组、字符数组或字符数组元胞数组的比较器。要在测试中使用此比较器,请创建一个 StringComparator 实例,并将其指定为 IsEqualTo 约束构造函数的 Using 名称-值参量的值。

创建对象

描述

示例

c = matlab.unittest.constraints.StringComparator 创建一个用于比较字符串数组、字符数组或包含字符数组的元胞数组的比较器。如果实际值和预期值是具有相同的类和大小的文本值,并且它们对应的元素相等,则满足该比较器。

示例

c = matlab.unittest.constraints.StringComparator(Name,Value) 使用一个或多个名称-值参量设置其他选项。例如,c = matlab.unittest.constraints.StringComparator("IgnoringCase",true) 创建一个不区分大小写的比较器。

输入参量

全部展开

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

示例: c = matlab.unittest.constraints.StringComparator(IgnoringCase=true)

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: c = matlab.unittest.constraints.StringComparator("IgnoringCase",true)

是否忽略大小写,指定为数值或逻辑值 0 (false) 或 1 (true)。默认情况下,比较器区分大小写。

此参量设置 IgnoreCase 属性。

是否忽略空白,指定为数值或逻辑值 0 (false) 或 1 (true)。默认情况下,比较器区分空白字符。空白字符包括空格 (' ')、换页符 ('\f')、换行符 ('\n')、回车符 ('\r')、水平制表符 ('\t') 和垂直制表符 ('\v')。

此参量设置 IgnoreWhitespace 属性。

属性

全部展开

是否忽略大小写,以逻辑值 0 (false) 或 1 (true) 形式返回。默认情况下,比较器区分大小写。

此属性由 IgnoringCase 名称-值参量设置。

属性:

GetAccess
public
SetAccess
private

是否忽略空白,以逻辑值 0 (false) 或 1 (true) 形式返回。默认情况下,比较器区分空白字符。

此属性由 IgnoringWhitespace 名称-值参量设置。

属性:

GetAccess
public
SetAccess
private

示例

全部折叠

使用 StringComparator 类比较实际值和预期值。

首先,导入此示例中使用的类。

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

创建一个供交互测试的测试用例。

testCase = TestCase.forInteractiveUse;

使用 StringComparator 实例将字符串 "Milky Way" 与其自身进行比较。测试通过。

testCase.verifyThat("Milky Way",IsEqualTo("Milky Way", ...
    "Using",StringComparator))
Verification passed.

将实际值更改为 'Milky Way'。测试失败,因为实际值和预期值的类不同。

testCase.verifyThat('Milky Way',IsEqualTo("Milky Way", ...
    "Using",StringComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> StringComparator failed.
        --> Classes do not match.
            
            Actual Class:
                char
            Expected Class:
                string
        
        Actual char:
            Milky Way
        Expected Value:
            "Milky Way"
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingStringComparatorExample.m (CompareValuesUsingStringComparatorExample) at 22

比较 "Milky way ""Milky Way"。测试失败,因为值不相等。

testCase.verifyThat("Milky way ",IsEqualTo("Milky Way", ...
    "Using",StringComparator))
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\CompareValuesUsingStringComparatorExample.m (CompareValuesUsingStringComparatorExample) at 27

要使测试通过,请使用一个忽略大小写和空白字符的比较器。

testCase.verifyThat("Milky way ",IsEqualTo("Milky Way", ...
    "Using",StringComparator( ...
    "IgnoringCase",true,"IgnoringWhitespace",true)))
Verification passed.

提示

  • 在大多数情况下,您不需要使用 StringComparator 实例。IsEqualTo 类创建一个约束来测试各种数据类型的相等性,包括字符串数组、字符数组和字符数组元胞数组。

    当需要覆盖由 IsEqualTo 类执行的比较时,请使用 StringComparator 实例。例如,如果希望在实际值和预期值是非文本值时比较失败,请在测试中包含 StringComparator 实例。您还可以使用 StringComparator 来限制元胞数组、结构体、字典、表和 MATLAB® 对象数组的公共属性中包含的值。在此示例中,MATLAB 会引发异常,因为实际值和预期值是数值数组。

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

版本历史记录

在 R2013a 中推出