Main Content

matlab.unittest.qualifications.Assertable 类

包: matlab.unittest.qualifications

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

说明

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

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

当在 TestCase 类的一个方法中产生断言失败时,该方法的类型确定哪些测试受到影响:

  • Test 方法 - 框架将整个 Test 方法标记为失败和不完整。

  • TestMethodSetupTestMethodTeardown 方法 - 框架将针对该方法实例运行的 Test 方法标记为失败和不完整。

  • TestClassSetupTestClassTeardown 方法 - 框架将整个测试类标记为失败和不完整。

当测试中出现违反先决条件但状态可恢复的情况时,断言可确保使用其余的测试。对于因不满足先决条件而导致失败的情况,它们不执行后续确认,从而防止不必要的失败。如果失败不影响测试的先决条件,也不会导致脚手架安装或拆解问题时,请使用确认,这样可以确保运行完整测试内容。

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

方法

全部展开

事件

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

NotifyAccess: private

ListenAccess: public

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

NotifyAccess: private

ListenAccess: public

示例

全部折叠

要测试 DocPolynom 对象的相乘性,请首先将 examples 文件夹添加到搜索路径中,并验证 DocPolynom 类可用于您的测试。有关 DocPolynom 类的详细信息,请参阅Representing Polynomials with Classes

在当前文件夹内的文件中,创建 DocPolynomMultiplicationTest 类,该类测试 DocPolynom 对象的相乘性。要在测试中访问 DocPolynom,请在 TestClassSetup methods 代码块中定义 addDocPolynomClassToPath 方法。在该方法中使用 PathFixture 实例将 examples 文件夹(包括 DocPolynom 类定义文件)添加到路径中。然后,使用断言来验证脚手架已使 DocPolynom 可用于您的测试。如果断言失败,框架会使 Test 方法失败而不尝试运行它们。否则,框架运行 Test 方法。最后,框架会拆解脚手架,并将路径恢复为其以前的状态。

classdef DocPolynomMultiplicationTest < 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))
            testCase.assertNotEmpty(?DocPolynom)
        end
    end
end

现在,将您的测试添加到具有 Test 属性的 methods 代码块。

classdef DocPolynomMultiplicationTest < 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))
            testCase.assertNotEmpty(?DocPolynom)
        end
    end

    methods (Test)
        function test1(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

        function test2(testCase)
            p1 = DocPolynom([1 4]);
            p2 = DocPolynom([2 3]);
            p3 = DocPolynom([1 0 -1]);
            actual = p1 * p2 * p3;
            expected = DocPolynom([2 11 10 -11 -12]);
            diagnostic = [testCase.TextToDisplay ...
                "(x + 4) * (2*x + 3) * (x^2 - 1) = 2*x^4 + 11*x^3 + 10*x^2 - 11*x - 12"];
            testCase.verifyEqual(actual,expected,diagnostic)
        end
    end
end

DocPolynomMultiplicationTest 类中运行测试。在此示例中,两个测试都通过。

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

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.38698 seconds testing time.

详细信息

全部展开

版本历史记录

在 R2013a 中推出