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

matlab.unittest.qualifications.Assertable 类

包: matlab.unittest.qualifications

用来确认测试先决条件的验证

说明

Assertable 类提供了一种用来确认测试先决条件的验证机制。除了对失败执行的操作外,Assertable 类与其他 matlab.unittest 验证的工作方式相同。

断言失败时,Assertable 类将引发 AssertionFailedException 以告知测试框架发生失败。如果希望通过断言点处的失败来表示当前测试方法的其余部分无效,同时又不想阻止其他测试方法的正常执行,这种情况下使用此方法会很有用。通常情况下,您可以使用断言来确保符合当前测试的先决条件,或是正确安装了脚手架。确保测试内容满足异常安全。如果您不能保证脚手架拆卸满足异常安全条件,或不能在失败后恢复,请改用致命断言。

使用断言来确保测试中出现违反先决条件时可以使用其余的测试方法,且所有脚手架状态都可以恢复。对于因不满足先决条件而导致失败的情况,断言可确保不执行其后续确认,因此还可以降低失败的噪音级别。但如果失败,测试框架会将内容完整但失败的测试方法标记为不完整。因此,如果失败不影响测试的先决条件,也不会导致脚手架安装或拆解问题时,请使用确认,这样可以为运行完整测试内容的测试方法提供更多信息。

方法

assertClass断言指定值的确切类
assertEmpty断言值为空
assertEqual断言值等于指定值
assertError断言函数引发指定异常
assertFail生成无条件的断言失败
assertFalse断言值为 false
assertGreaterThan断言值大于指定值
assertGreaterThanOrEqual断言值大于或等于指定值
assertInstanceOf断言值是指定类型的对象
assertLength断言值具有指定长度
assertLessThan断言值小于指定值
assertLessThanOrEqual断言值小于或等于指定值
assertMatches断言字符串与指定的正则表达式匹配
assertNotEmpty断言值不为空
assertNotEqual断言值不等于指定值
assertNotSameHandle断言值不是指定实例的句柄
assertNumElements断言值具有指定的元素计数
assertReturnsTrue断言计算时函数返回 true
assertSameHandle断言两个值是同一实例的句柄
assertSize断言值具有指定大小
assertSubstring断言字符串包含指定字符串
assertThat断言值满足指定约束
assertTrue断言值为 true
assertWarning断言函数引发指定的警告
assertWarningFree断言函数未发出警告

事件

AssertionFailed

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

AssertionPassed

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

复制语义

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

示例

全部折叠

使用 assertable 验证测试先决条件。此示例将创建一个测试用例以便向 MAT 文件写入多项式。

创建 DocPolynomSaveLoadTest 测试用例。在此示例的后续步骤中,请参阅以下 DocPolynomSaveLoadTest 测试用例。这些步骤高亮显示 testSaveLoad 函数中的特定代码;代码语句不适合在类定义文件上下文外部执行。

 DocPolynomSaveLoadTest 类定义文件

要在“运行 DocPolynomSaveLoadTest 测试用例”中执行 MATLAB® 命令,请将 DocPolynomSaveLoadTest.m 文件添加到 MATLAB 路径上的文件夹。

testSaveLoad 函数包括以下阶段:

  • 阶段 1:设置 - 创建并验证先决条件代码。

  • 阶段 2:执行 - 创建一个 DocPolynom 对象并将其保存到 MAT 文件中。

  • 阶段 3:验证 - 测试是否成功保存了对象。

  • 阶段 4:拆解 - 执行拆解代码。

定义阶段 1 先决条件。对于此测试,使用临时文件夹创建 DocPolynom 对象。继续进行此测试的先决条件是以下命令成功执行。

tempFolder = tempname; 
[success, message] = mkdir(tempFolder); 

测试 mkdir 函数的结果。使用 assertTrue 方法测试 mkdir success 参数有无错误。如果出现断言,testSaveLoad 测试方法的其余部分无效,并且测试标记为 Incomplete

testCase.assertTrue(success, ... 
    Diagnostic.join('Could not create the temporary folder.', ... 
        message)) 

如果 mkdir 函数失败,MATLAB 将显示诊断消息“Could not create the temporary folder”以及 mkdir message 参数的内容。

添加拆解脚手架代码。创建临时文件夹是设置代码,这需要对 rmdir 函数进行相应调用以将 MATLAB 恢复为原始状态。使用 addTeardown 方法可确保即使在测试方法中引发异常,拆解代码也会执行。这使测试满足异常安全条件。

testCase.addTeardown(@() testCase.cleanUpTemporaryFolder(tempFolder)) 

将拆解代码放在辅助函数中。虽然 addTeardown 语句出现在与 mkdir 设置语句相同的代码块中,但 cleanUpTemporaryFolder 代码将在测试方法的阶段 4 中执行。

DocPolynomSaveLoadTest 测试用例中,辅助函数 cleanUpTemporaryFolder 执行 rmdir 函数。

定义用于创建有效 MAT 文件的先决条件。用于验证 DocPolynom 对象是否正确保存和加载的先决条件是 MAT 文件 DocPolynomFile.mat 已成功创建。Phase 2: Exercise 块中的以下代码测试此条件。如果出现断言,testSaveLoad 测试方法的其余部分无效,并且测试标记为 FailedIncomplete

 testCase.assertEqual(exist('DocPolynomFile.mat','file'), 2, ... 
     Diagnostic.join('The mat file was not saved correctly.', ...
     @() dir(pwd)))

如果未创建文件,MATLAB 将显示诊断消息、The mat file was not saved correctly 以及临时文件夹的内容。

运行 DocPolynomSaveLoadTest 测试用例。

tc = DocPolynomSaveLoadTest;
run(tc);
Running DocPolynomSaveLoadTest
.
Done DocPolynomSaveLoadTest
__________

详细信息

全部展开

在 R2013a 中推出