Main Content

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

matlab.unittest.qualifications.Verifiable 类

包: matlab.unittest.qualifications

产生软失败条件的验证

描述

Verifiable 类提供用于生成软失败条件的验证。除了对失败执行的操作外,Verifiable 类与 matlab.unittest.qualifications 包中的其他验证类的工作方式相同。

确认失败时,Verifiable 类会通知测试框架这次失败,在其中包含有关这次失败的所有诊断信息,但仍会继续执行当前运行的测试,而不会引发异常。如果确认点处的失败对于剩余的测试内容不构成重大影响,此行为会很有用。通常,您会将确认作为四阶段测试的主要验证手段。使用假设、断言和致命断言等其他验证类型来测试是否违反先决条件或测试安装是否正确。

由于验证不会引发异常,因此即使出现测试失败的情形,依然会完成所有的测试内容。这有助于您了解如何关闭一部分软件以满足测试套件要求。引发异常的验证类型不能提供此类信息,因为一旦引发异常,便会保留一定数量的未达代码或未执行代码。确认还为失败条件下的测试提供了更大的测试范围。但是,在您过度使用确认时,它们便可能在单一失败下产生过多的噪声。如果失败会导致后面的验证点发生失败,请改用断言或致命断言。

matlab.unittest.qualifications.Verifiable 类是 handle 类。

方法

全部展开

事件

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

NotifyAccess: private

ListenAccess: public

VerificationPassed通过验证时触发。QualificationEventData 对象传递给侦听程序回调函数。matlab.unittest.qualifications.QualificationEventData

NotifyAccess: private

ListenAccess: public

示例

全部折叠

使用验证来测试 DocPolynom 类,该类在 MATLAB® 中表示多项式。有关该类的详细信息,请参阅Representing Polynomials with Classes

在当前文件夹内的一个文件中,创建 DocPolynomTest 类,该类测试 DocPolynom 类的不同方法。要在测试中访问 DocPolynom,请在 TestClassSetup methods 代码块中定义 addDocPolynomClassToPath 方法。该方法使用 PathFixture 实例将 examples 文件夹(包括 DocPolynom 类定义文件)添加到搜索路径。一旦测试运行完毕,测试框架会拆解脚手架并将路径还原到其先前状态。

classdef DocPolynomTest < matlab.unittest.TestCase
    properties
        TextToDisplay = "Equation under test: "
    end

    methods (TestClassSetup)
        function addDocPolynomClassToPath(testCase)
            import matlab.unittest.fixtures.PathFixture
            folder = fullfile(matlabroot, ...
                "help","techdoc","matlab_oop","examples");
            testCase.applyFixture(PathFixture(folder))
        end
    end
end

现在,将您的测试添加到具有 Test 属性的 methods 代码块。要测试 DocPolynom 类,请在以下三个 Test 方法中使用验证:

  • testConstructor 方法 - 使用 verifyClass 测试 DocPolynom 类构造函数。

  • testAddition 方法 - 使用 verifyEqual 来测试 DocPolynom 对象的相加性。

  • testMultiplication 方法 - 使用 verifyEqual 来测试 DocPolynom 对象的相乘性。

classdef DocPolynomTest < matlab.unittest.TestCase
    properties
        TextToDisplay = "Equation under test: "
    end

    methods (TestClassSetup)
        function addDocPolynomClassToPath(testCase)
            import matlab.unittest.fixtures.PathFixture
            folder = fullfile(matlabroot, ...
                "help","techdoc","matlab_oop","examples");
            testCase.applyFixture(PathFixture(folder))
        end
    end

    methods (Test)
        function testConstructor(testCase)
            p = DocPolynom([1 0 1]);
            testCase.verifyClass(p,?DocPolynom)
        end

        function testAddition(testCase)
            p1 = DocPolynom([1 0 1]);
            p2 = DocPolynom([5 2]);
            actual = p1 + p2;
            expected = DocPolynom([1 5 3]);
            diagnostic = [testCase.TextToDisplay ...
                "(x^2 + 1) + (5*x + 2) = x^2 + 5*x + 3"];
            testCase.verifyEqual(actual,expected,diagnostic)
        end

        function testMultiplication(testCase)
            p1 = DocPolynom([1 0 3]);
            p2 = DocPolynom([5 2]);
            actual = p1 * p2;
            expected = DocPolynom([5 2 15 6]);
            diagnostic = [testCase.TextToDisplay ...
                "(x^2 + 3) * (5*x + 2) = 5*x^3 + 2*x^2 + 15*x + 6"];
            testCase.verifyEqual(actual,expected,diagnostic)
        end
    end
end

DocPolynomTest 类中运行测试。在此示例中,所有测试都通过。

runtests("DocPolynomTest")
Running DocPolynomTest
...
Done DocPolynomTest
__________
ans = 
  1×3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   3 Passed, 0 Failed, 0 Incomplete.
   0.16695 seconds testing time.

版本历史记录

在 R2013a 中推出