本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

matlab.unittest.qualifications.Assumable 类

包: matlab.unittest.qualifications

用于筛选测试内容的验证

说明

Assumable 类提供了一种用于筛选测试内容的验证机制。除了失败时执行的操作外,Assumable 类与其他 matlab.unittest 验证的工作方式相同。

假设失败时,Assumable 类将引发 AssumptionFailedException 以告知测试框架发生失败。然后,测试框架会将测试内容标记为已筛选并继续测试。假设通常用于确保仅在满足特定先决条件时执行测试。但其实在不满足此先决条件的情况下执行测试也不会导致测试失败。确保测试内容满足异常安全条件。如果失败条件是指测试失败,请使用断言或确认来代替假设。

TestCase 方法定义中指定的属性决定了筛选哪些测试。测试框架在 TestCase 方法内遇到假设失败时会发生以下行为:

  • 如果您使用 Test 属性定义 TestCase 方法,测试框架将整个方法标记为已筛选并运行后续的测试方法。

  • 如果您使用 TestMethodSetupTestMethodTeardown 属性定义 TestCase 方法,测试框架仅将对该实例运行的方法标记为已筛选。

  • 如果您使用 TestClassSetupTestClassTeardown 属性定义TestCase 方法,测试框架将筛选整个 TestCase 类。

使用假设筛选测试内容并不会使测试失败。因此,可能会生成无效的测试代码。请对筛选的测试进行监控来避免这种情况。

方法

assumeClass假设指定值的确切类
assumeEmpty假设值为空
assumeEqual假设值等于指定值
assumeError假设函数引发指定异常
assumeFail生成无条件的假设失败
assumeFalse假设值为 false
assumeGreaterThan假设值大于指定值
assumeGreaterThanOrEqual假设值大于或等于指定值
assumeInstanceOf假设值是指定类型的对象
assumeLength假设值具有指定长度
assumeLessThan假设值小于指定值
assumeLessThanOrEqual假设值小于或等于指定值
assumeMatches假设字符串与指定的正则表达式匹配
assumeNotEmpty假设值不为空
assumeNotEqual假设值不等于指定值
assumeNotSameHandle假设值不是指定实例的句柄
assumeNumElements假设值具有指定的元素计数
assumeReturnsTrue假设计算时函数返回 true
assumeSameHandle假设两个值是同一实例的句柄
assumeSize假设值具有指定大小
assumeSubstring假设字符串包含指定字符串
assumeThat假设值满足指定约束
assumeTrue假设值为 true
assumeWarning假设函数发出指定的警告
assumeWarningFree假设函数未发出警告

事件

AssumptionFailed

假设失败时触发。QualificationEventData 对象传递给侦听程序回调函数。

AssumptionPassed

通过假设时触发。QualificationEventData 对象传递给侦听程序回调函数。

复制语义

句柄。要了解句柄类如何影响复制操作,请参阅复制对象

示例

全部折叠

假设可保证仅在满足某些先决条件时且此类事件不会生成测试失败时才运行测试。发生假设失败时,测试将标记为已筛选。

创建 IsSupportedTest 测试用例。在此示例的后续步骤(高亮文件中的特定函数)中,请参阅以下 IsSupportedTest 测试用例。

 IsSupportedTest 类定义文件

要在此示例中执行 MATLAB® 命令,请将 IsSupportedTest.m 文件添加到 MATLAB 路径上的文件夹。

编写测试以验证平台。此测试用例中的所有测试只能在 UNIX® 平台上运行。TestPlatform 函数使用 assumeFalse 方法测试 MATLAB 是否运行于 Windows® 平台上。如果是,则测试失败。

function TestPlatform(testcase)
    testcase.assumeFalse(ispc,...
        'Do not run any of these tests on Windows.')
end

TestPlatform 设置为 TestClassSetup 测试。要使 TestPlatform 测试成为先决条件,请将其添加到 methods (TestClassSetup) 块内部。

运行测试用例。创建一个测试用例对象并在 Windows 平台上运行测试。

tc = IsSupportedTest;
res = tc.run;
Running IsSupportedTest

================================================================================
All tests in IsSupportedTest were filtered.
    Test Diagnostic: Do not run any of these tests on Windows.
    Details
================================================================================

Done IsSupportedTest
__________

Failure Summary:

     Name                   Failed  Incomplete  Reason(s)
    ====================================================================
     IsSupportedTest/test1              X       Filtered by assumption.

这些测试已筛选,并且未运行(标记为Incomplete)。

有关详细信息,请点击“详细信息”链接。

================================================================================
An assumption was not met while setting up or tearing down IsSupportedTest.
As a result, all IsSupportedTest tests were filtered.

    ----------------
    Test Diagnostic:
    ----------------
    Do not run any of these tests on Windows.

    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeFalse failed.
    --> The value must evaluate to "false".
    
    Actual Value:
             1

    ------------------
    Stack Information:
    ------------------
    In C:\work\IsSupportedTest.m (IsSupportedTest.TestPlatform) at 4
================================================================================

Stack Information 下指向 IsSupportedTest.TestPlatform 的链接将您转至失败的 assumeFalse 方法。

详细信息

全部展开

在 R2013a 中推出