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 |
致命断言 输入参量
|
fatalAssertEqualsBaseline(需要 MATLAB Test™) |
致命断言 输入参量
名称-值参量
|
事件
| 事件名称 | 触发器 | 事件数据 | 事件属性 |
|---|---|---|---|
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属性 - 在测试后使用此属性重置环境变量。testUpdateTest方法 - 存储环境变量的原始值,调用受测函数,并验证该函数是否将环境变量设置为预期值。由于在测试期间状态会发生变化,因此一旦测试运行完成,请调用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 Test 许可证,可以使用 fatalAssertEqualsBaseline 方法来测试某个值是否等于基线数据。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)