matlab.unittest.qualifications.FatalAssertable 类
命名空间: matlab.unittest.qualifications
用于中止测试执行的验证
描述
FatalAssertable
类提供用于中止测试执行的验证。除了对失败执行的操作外,FatalAssertable
类与 matlab.unittest.qualifications
包中的其他验证类的工作方式相同。
致命断言失败时,FatalAssertable
类会引发 FatalAssertionFailedException
对象以告知测试框架发生失败。然后,该框架会显示与失败有关的诊断信息并中止测试会话。当失败涉及根本以致继续测试已经没有意义时,此行为非常有用。此外,您还可以在脚手架拆解中使用致命断言,确保环境状态得以正确恢复。如果您可以保证脚手架拆解满足异常安全条件或在失败后恢复环境状态,请改用断言。
致命断言可避免由于基本测试失败引起的 false 测试失败。当先前的测试无法恢复状态时,它们还可以防止 false 测试失败。如果框架无法正确拆解脚手架,您必须手动重置状态。例如,您可能需要重新启动 MATLAB®。
matlab.unittest.qualifications.FatalAssertable
类是一个 handle
类。
方法
公共方法
FatalAssertable
类为测试值和如何响应失败提供了几种验证方法。例如,fatalAssertEmpty
测试某个值为空,而 fatalAssertTrue
测试 actual 值为 true。
注意
FatalAssertable
类的方法对应于 Verifiable
类的方法。它们仅在验证类型方面有所不同。您可以像调用 Verifiable
方法一样调用 FatalAssertable
方法。
fatalAssertEqual |
致命断言 输入参数
名称-值参数
|
fatalAssertFail |
生成无条件的致命断言失败。类似于 输入参数
|
fatalAssertFalse |
致命断言 输入参数
|
fatalAssertNotEqual |
致命断言 输入参数
|
fatalAssertNotSameHandle |
致命断言 输入参数
|
fatalAssertReturnsTrue |
致命断言 输入参数
|
fatalAssertSameHandle |
致命断言 输入参数
|
fatalAssertThat |
致命断言 输入参数
|
fatalAssertTrue |
致命断言 输入参数
|
fatalAssertError |
致命断言 输入参数
输出参数
|
fatalAssertWarning |
致命断言 输入参数
输出参数
|
fatalAssertWarningFree |
致命断言 输入参数
输出参数
|
fatalAssertGreaterThan |
致命断言 输入参数
|
fatalAssertGreaterThanOrEqual |
致命断言 输入参数
|
fatalAssertLessThan |
致命断言 输入参数
|
fatalAssertLessThanOrEqual |
致命断言 输入参数
|
fatalAssertEmpty |
致命断言 输入参数
|
fatalAssertLength |
致命断言 输入参数
|
fatalAssertNotEmpty |
致命断言 输入参数
|
fatalAssertNumElements |
致命断言 输入参数
|
fatalAssertSize |
致命断言 输入参数
|
fatalAssertClass |
致命断言 输入参数
|
fatalAssertInstanceOf |
致命断言 输入参数
|
fatalAssertMatches |
致命断言 输入参数
|
fatalAssertSubstring |
致命断言 输入参数
|
事件
事件名称 | 触发器 | 事件数据 | 事件属性 |
---|---|---|---|
FatalAssertionFailed | 致命断言失败时触发。QualificationEventData 对象传递给侦听程序回调函数。 | matlab.unittest.qualifications.QualificationEventData |
|
FatalAssertionPassed | 通过致命断言时触发。QualificationEventData 对象传递给侦听程序回调函数。 | matlab.unittest.qualifications.QualificationEventData |
|
示例
如果状态被破坏,则中止测试会话
测试一个设置操作系统环境变量值的函数。如果在测试后环境变量无法重置为其原始值,请使用致命断言失败中止测试会话。
在当前文件夹的一个文件中创建 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.
详细信息
诊断
根据测试运行器的配置,测试框架可能会在验证通过或失败时显示诊断信息。默认情况下,框架仅在鉴定失败时显示诊断信息。您可以通过自定义测试运行器来覆盖默认行为。例如,您可以使用 DiagnosticsOutputPlugin
实例来显示失败和通过事件诊断信息。
要将诊断消息添加到测试用例中,请在任何鉴定方法中使用可选的 diagnostic
参数。您可以将 diagnostic
指定为字符串数组、字符数组、函数句柄或 matlab.automation.diagnostics.Diagnostic
对象数组。
异常安全
测试内容有时会更改其环境的状态。当环境可以还原到其原始状态时,即使存在异常,内容也满足异常安全条件。异常安全可确保引发异常的测试不会因破坏环境而影响后续测试。为了实现异常安全,请使用 addTeardown
方法执行所有拆解操作。在原始状态更改之前或之后立即调用 addTeardown
,中间没有任何可能引发异常的其他代码。
例如,下面的代码不满足异常安全条件。如果测试失败,测试框架不会关闭图窗。此图窗的存在可能导致后续测试失败。
% Not exception safe
f = figure;
testCase.fatalAssertEqual(actual,expected)
close(f)
另一方面,以下代码满足异常安全条件,因为不管测试结果如何,框架都会关闭图窗。
% Exception safe
f = figure;
testCase.addTeardown(@close,f)
testCase.fatalAssertEqual(actual,expected)
使用 addTeardown
拆解脚手架并不能保证代码就是异常安全的。以下代码不满足异常安全条件,因为对 addTeardown
的调用是在测试后进行的。如果测试失败,框架不会关闭图窗。
% Not exception safe
f = figure;
testCase.fatalAssertEqual(actual,expected)
testCase.addTeardown(@close,f)
版本历史记录
在 R2013a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)