Main Content

verifyTrue

类: matlab.unittest.qualifications.Verifiable
命名空间: matlab.unittest.qualifications

确认值为 true

说明

示例

verifyTrue(testCase,actual) 验证 actual 的值为逻辑值 1 (true)。

示例

verifyTrue(testCase,actual,diagnostic) 还将 diagnostic 中的诊断信息与鉴定相关联。

输入参数

全部展开

测试用例,指定为 matlab.unittest.qualifications.Verifiable 对象。由于 matlab.unittest.TestCase 类会子类化 matlab.unittest.qualifications.Verifiable 并继承其方法,因此 testCase 通常是 matlab.unittest.TestCase 对象。

要测试的值,指定为任何数据类型的值。虽然您可以提供任何数据类型的值,但如果 actual 不是值为 true 的逻辑标量,测试将失败。

当鉴定通过或失败时显示的诊断信息,指定为字符串数组、字符数组、函数句柄或 matlab.automation.diagnostics.Diagnostic 对象数组。

根据测试运行器的配置,测试框架可能会在鉴定通过或失败时显示诊断信息。默认情况下,框架仅在鉴定失败时显示诊断信息。您可以通过自定义测试运行器来覆盖默认行为。例如,使用 DiagnosticsOutputPlugin 实例来显示失败和通过事件诊断信息。

示例: "My Custom Diagnostic"

示例: @dir

属性

Sealedtrue

要了解方法的属性,请参阅方法属性

示例

全部展开

创建一个供交互测试的测试用例。

testCase = matlab.unittest.TestCase.forInteractiveUse;

测试 true

verifyTrue(testCase,true)
Verification passed.

测试 false

verifyTrue(testCase,false)
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must evaluate to "true".
    
    Actual Value:
      logical
    
       0
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestMATLABLogicalFunctionsExample.m (TestMATLABLogicalFunctionsExample) at 16

当您使用 verifyTrue 进行测试时,如果 actual 值的类型不是 logical,测试将失败。

创建一个供交互测试的测试用例。

testCase = matlab.unittest.TestCase.forInteractiveUse;

测试值 1。测试失败,因为该值的类型为 double

verifyTrue(testCase,1,"Value must be a logical scalar.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Value must be a logical scalar.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must be logical. It is of type "double".
    
    Actual Value:
         1
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestANonzeroNumericValueExample.m (TestANonzeroNumericValueExample) at 14

当您使用 verifyTrue 进行测试时,如果 actual 值是非标量,测试将失败。

创建一个供交互测试的测试用例。

testCase = matlab.unittest.TestCase.forInteractiveUse;

测试值 [true true]。测试失败,因为该值不是标量。

verifyTrue(testCase,[true true])
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must be scalar. It has a size of [1  2].
    
    Actual Value:
      1×2 logical array
    
       1   1
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestLogicalArraysExample.m (TestLogicalArraysExample) at 15

提示

  • verifyTrue 方法非常方便。例如,verifyTrue(testCase,actual) 在功能上等效于以下代码。

    import matlab.unittest.constraints.IsTrue
    testCase.verifyThat(actual,IsTrue)
    
  • verifyTrue 提供的严格程度可能不及其他约束(例如 IsEqualTo)。在此示例中,使用 verifyTrue 的测试通过,但使用 verifyEqual 的测试失败。

    actual = 5;
    expected = uint8(5);
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    verifyTrue(testCase,isequal(actual,expected))   % Test passes
    verifyEqual(testCase,actual,expected)   % Test fails
    

    一般情况下,verifyTrueIsEqualTo 的运行速度更快,但严格程度较低,在出现失败时提供的诊断信息也较少。

  • verifyTrue 的替代方法是 verifyReturnsTrue 方法。verifyTrue 运行速度更快,更易于使用,但 verifyReturnsTrue 提供的诊断信息稍好。在此示例中,两个测试都失败,但第二个测试将函数句柄显示为诊断的一部分。

    actual = 1;
    expected = 2;
    testCase = matlab.unittest.TestCase.forInteractiveUse;
    verifyTrue(testCase,isequal(actual,expected))
    verifyReturnsTrue(testCase,@()isequal(actual,expected))
  • 使用此确认在不引发异常的条件下生成和记录失败。由于确认不会引发异常,因此即使出现确认失败的情形,依然会完成所有的测试内容。通常,确认指的是对单元测试的主要鉴定,因为这些确认一般不要求提前从测试中退出。使用其他鉴定类型来测试是否违反先决条件或测试安装是否正确:

    • 使用断言鉴定确保测试环境满足无论如何都不会导致测试失败的先决条件。假设失败会生成已过滤的测试,且测试框架会将测试设为 Incomplete。有关详细信息,请参阅 matlab.unittest.qualifications.Assumable

    • 当失败条件导致当前测试内容的剩余部分都失效,但不会阻止后续测试正确执行时,使用断言鉴定。断言点处的失败会将当前测试展现为 FailedIncomplete。有关详细信息,请参阅 matlab.unittest.qualifications.Assertable

    • 使用致命断言鉴定在失败时中止测试会话。当失败涉及根本以致继续测试已经没有意义时,这些鉴定非常有用。当脚手架拆解不能正确还原环境状态,适合中止测试并启动一个新会话时,致命断言也很有用。有关详细信息,请参阅 matlab.unittest.qualifications.FatalAssertable

版本历史记录

在 R2013a 中推出