Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

matlab.unittest.qualifications.Assumable 类

命名空间: matlab.unittest.qualifications

用于过滤测试内容的验证

描述

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

假设失败时,Assumable 类将引发 AssumptionFailedException 对象以告知测试框架发生失败。然后,框架会将当前测试内容标记为已过滤并继续测试。假设确保测试仅在满足特定先决条件时运行,但其实在不满足此先决条件的情况下执行测试也不会导致测试失败。如果未满足先决条件会导致测试失败,请使用断言来代替假设。

当在 TestCase 类的一个方法中产生假设失败时,该方法的类型确定过滤哪些测试:

  • Test 方法 - 框架将整个 Test 方法标记为已过滤。

  • TestMethodSetupTestMethodTeardown 方法 - 框架将针对该方法实例运行的 Test 方法标记为已过滤。

  • TestClassSetupTestClassTeardown 方法 - 框架将整个测试类标记为已过滤。

当您使用假设时,请确保您的测试内容满足异常安全条件。由于假设不会导致测试失败,因此部分测试代码可能会以静默方式被过滤。为了避免产生无效的测试代码,请考虑监视您的已过滤测试。

matlab.unittest.qualifications.Assumable 类是一个 handle 类。

方法

全部展开

事件

事件名称触发器事件数据事件属性
AssumptionFailed假设失败时触发。QualificationEventData 对象传递给侦听程序回调函数。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

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

NotifyAccess: private

ListenAccess: public

示例

全部折叠

使用假设来确保您的测试只能在 Linux® 平台上运行。如果 MATLAB 安装在 Microsoft® Windows® 或 macOS 平台上,则指示测试框架过滤测试。

在当前文件夹的一个文件中创建 LinuxTests 类。要针对平台进行测试,请在 TestClassSetup methods 代码块中定义 testPlatform 方法。该方法使用对 assumeTrue 方法的调用来测试 MATLAB 是否安装在 Linux 平台上。如果假设失败,框架会过滤整个测试类。

classdef LinuxTests < matlab.unittest.TestCase
    methods (TestClassSetup)
        function testPlatform(testCase)
            testCase.assumeTrue(isunix && ~ismac, ...
                "Tests must run on a Linux platform.")
        end
    end
end

在具有 Test 属性的 methods 代码块中定义测试。此示例中的测试仅用于说明目的。

classdef LinuxTests < matlab.unittest.TestCase
    methods (TestClassSetup)
        function testPlatform(testCase)
            testCase.assumeTrue(isunix && ~ismac, ...
                "Tests must run on a Linux platform.")
        end
    end

    methods (Test)
        function test1(testCase)
            testCase.verifyWarningFree(@rand)
        end
        function test2(testCase)
            testCase.verifyWarningFree(@() size([]))
        end
    end
end

在 Windows 计算机上运行测试。由于假设在类设置级别失败,框架会过滤由 LinuxTests 类定义的测试。

runtests("LinuxTests")
Running LinuxTests

================================================================================
All tests in LinuxTests were filtered.
    Test Diagnostic: Tests must run on a Linux platform.
Details
================================================================================

Done LinuxTests
__________

Failure Summary:

     Name              Failed  Incomplete  Reason(s)
    ===============================================================
     LinuxTests/test1              X       Filtered by assumption.
    ---------------------------------------------------------------
     LinuxTests/test2              X       Filtered by assumption.
ans = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   0 Passed, 0 Failed, 2 Incomplete.
   0.27782 seconds testing time.

详细信息

全部展开

版本历史记录

在 R2013a 中推出