Main Content

matlab.unittest.constraints.NumericComparator 类

命名空间: matlab.unittest.constraints

用于比较数值数组的比较器

描述

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

创建对象

描述

示例

c = matlab.unittest.constraints.NumericComparator 创建一个用于数值数组的比较器。如果实际值和预期值具有相同的数值类、大小、复/实性和稀疏性,并且 isequaln 函数发现它们相等,则满足该比较器。

示例

c = matlab.unittest.constraints.NumericComparator("Within",tol) 在比较中使用指定的容差。当使用此语法时,比较器首先检查实际值和预期值的类、大小和稀疏性是否相等。如果这些检查中的任一项失败,则不满足该比较器。如果这些检查通过,但复/实性检查或 isequaln 检查失败,则比较器将比较委托给 tol

输入参数

全部展开

容差,指定为 matlab.unittest.constraints.Tolerance 对象。

此参数设置 Tolerance 属性。

示例: matlab.unittest.constraints.AbsoluteTolerance(1)

示例: matlab.unittest.constraints.AbsoluteTolerance(1) | matlab.unittest.constraints.RelativeTolerance(0.1)

属性

全部展开

容差,以 matlab.unittest.constraints.Tolerance 对象形式返回。

此属性由 tol 输入参数设置。

属性:

GetAccess
public
SetAccess
private

示例

全部折叠

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

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

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

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

testCase = TestCase.forInteractiveUse;

使用 NumericComparator 实例将数值与其自身进行比较。测试通过。

testCase.verifyThat(3.14,IsEqualTo(3.14,"Using",NumericComparator))
Verification passed.

pi 的值与 3.14 比较。测试失败。

testCase.verifyThat(pi,IsEqualTo(3.14,"Using",NumericComparator))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    IsEqualTo failed.
    --> NumericComparator failed.
        --> The numeric values are not equal using "isequaln".
        --> Failure table:
                     Actual         Expected           Error              RelativeError    
                ________________    ________    ___________________    ____________________
                                                                                           
                3.14159265358979      3.14      0.00159265358979299    0.000507214519042354
        
        Actual Value:
           3.141592653589793
        Expected Value:
           3.140000000000000
    ------------------
    Stack Information:
    ------------------
    In C:\work\CompareValuesUsingNumericComparatorExample.m (CompareValuesUsingNumericComparatorExample) at 21

使用绝对容差 0.01 重复该测试。测试通过。

testCase.verifyThat(pi,IsEqualTo(3.14, ...
    "Using",NumericComparator("Within",AbsoluteTolerance(0.01))))
Verification passed.

提示

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

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

    import matlab.unittest.TestCase
    import matlab.unittest.constraints.IsEqualTo
    import matlab.unittest.constraints.NumericComparator
    
    testCase = TestCase.forInteractiveUse;
    exp = {1,2,3}; 
    act = exp;
    testCase.verifyThat(act,IsEqualTo(exp,"Using",NumericComparator))
    

版本历史记录

在 R2013a 中推出