Main Content

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

matlab.unittest.qualifications.FatalAssertable 类

命名空间: matlab.unittest.qualifications

用于中止测试执行的验证

描述

FatalAssertable 类提供用于中止测试执行的验证。除了对失败执行的操作外,FatalAssertable 类与 matlab.unittest.qualifications 包中的其他验证类的工作方式相同。

致命断言失败时,FatalAssertable 类会引发 FatalAssertionFailedException 对象以告知测试框架发生失败。然后,该框架会显示与失败有关的诊断信息并中止测试会话。当失败涉及根本以致继续测试已经没有意义时,此行为非常有用。此外,您还可以在脚手架拆解中使用致命断言,确保环境状态得以正确恢复。如果您可以保证脚手架拆解满足异常安全条件或在失败后恢复环境状态,请改用断言。

致命断言可避免由于基本测试失败引起的 false 测试失败。当先前的测试无法恢复状态时,它们还可以防止 false 测试失败。如果框架无法正确拆解脚手架,您必须手动重置状态。例如,您可能需要重新启动 MATLAB®

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

方法

全部展开

事件

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

NotifyAccess: private

ListenAccess: public

FatalAssertionPassed通过致命断言时触发。QualificationEventData 对象传递给侦听程序回调函数。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

示例

全部折叠

测试一个设置操作系统环境变量值的函数。如果在测试后环境变量无法重置为其原始值,请使用致命断言失败中止测试会话。

在当前文件夹的一个文件中创建 setUserName 函数。该函数通过调用 setenv 来设置 'UserName' 环境变量。

function setUserName(name)
setenv('UserName',name)
end

要测试 setUserName 函数,请在当前文件夹中创建一个名为 SetUserNameTest 的测试类。为您的测试定义必要的类成员:

  • OriginalUserName 属性 - 在测试后使用此属性重置环境变量。

  • testUpdate Test 方法 - 存储环境变量的原始值,调用受测函数,并验证该函数是否将环境变量设置为预期值。由于在测试期间状态会发生变化,因此一旦测试运行完成,请调用 addTeardown 来恢复状态。

  • resetUserName 辅助方法 - 调用 setUserName 函数来重置环境变量。如果操作不成功,则使用致命断言失败中止测试会话。

classdef SetUserNameTest < matlab.unittest.TestCase
    properties (SetAccess = private)
        OriginalUserName
    end
    
    methods (Test)
        function testUpdate(testCase)
            testCase.OriginalUserName = getenv('UserName');
            setUserName('David')
            testCase.addTeardown(@() testCase.resetUserName)
            testCase.verifyEqual(getenv('UserName'),'David')
        end
    end

    methods (Access = private)
        function resetUserName(testCase)
            setUserName(testCase.OriginalUserName)
            testCase.fatalAssertEqual(getenv('UserName'),testCase.OriginalUserName)
        end
    end
end

运行 SetUserNameTest 类。测试通过。

runtests("SetUserNameTest")
Running SetUserNameTest
.
Done SetUserNameTest
__________
ans = 
  TestResult with properties:

          Name: 'SetUserNameTest/testUpdate'
        Passed: 1
        Failed: 0
    Incomplete: 0
      Duration: 0.0226
       Details: [1×1 struct]

Totals:
   1 Passed, 0 Failed, 0 Incomplete.
   0.022649 seconds testing time.

详细信息

全部展开

版本历史记录

在 R2013a 中推出