Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

matlab.unittest.TestCase 类

包: matlab.unittest

所有 matlab.unittest 测试类的超类

说明

通过 TestCase 类,可以在 matlab.unittest 框架中编写测试。它提供了编写并标识测试内容的方法,以及测试脚手架的设置与拆解例程。创建此类需要从 TestCase 派生,以生成 TestCase 子类。然后,子类便可以利用元数据属性来指定测试和测试脚手架。

构造

使用 forInteractiveUse 静态方法创建一个 TestCase,以供交互式命令行使用。在框架中运行测试时,TestCase 实例通过 matlab.unittest.TestRunner 进行构造。

方法

addTeardown动态向 TestCase 实例添加拆解例程
applyFixture将脚手架与 TestCase 配合使用
forInteractiveUse创建供交互使用的 TestCase
getSharedTestFixtures提供对共享测试脚手架的访问权限
log在测试执行期间记录诊断信息
onFailure动态添加检测故障的诊断
run运行 TestCase 测试

继承的方法

TestCase 类从以下类继承方法:

matlab.unittest.qualifications.Assertable用来确认测试先决条件的验证
matlab.unittest.qualifications.Assumable用于筛选测试内容的验证
matlab.unittest.qualifications.FatalAssertable用于中止测试执行的验证
matlab.unittest.qualifications.Verifiable产生软故障条件的验证

属性

类属性

TestCase 对象支持以下类级别属性。请在 classdef 块中类名称之前指定类级别属性。

SharedTestFixtures包含共享测试脚手架的类块。必须将 SharedTestFixtures 定义为 matlab.unittest.fixtures.Fixture 实例的元胞数组。
TestTags包含使用指定值标记的测试的类块。必须将 TestTags 定义为由非空字符向量组成的元胞数组或由非空字符串组成的数组,其中每个元素是一个测试标记。

方法特性

派生自 TestCase 的类可以定义包含 matlab.unittest 框架特定属性的 methods 块,以指定测试内容。

Test包含测试方法的方法块。
TestMethodSetup包含设置代码的方法块。
TestMethodTeardown包含拆解代码的方法块。
TestClassSetup包含类级别设置代码的方法块。
TestClassTeardown包含类级别拆解代码的方法块。
ParameterCombination

包含参数化的测试代码的方法块。该属性接受以下值:

  • 'exhaustive'(默认值):对所有的参数组合调用测试方法。

  • 'sequential':通过每个参数中的相应值调用测试方法。每个参数必须包含相同数量的值。

  • 'pairwise':至少对每对参数值调用一次测试方法。

TestParameterDefinition包含在套件创建时初始化参数化属性的代码的方法块。使用此属性定义的方法必须是静态的。
TestTags包含使用指定值标记的测试的方法块。必须将 TestTags 定义为由非空字符向量组成的元胞数组或由非空字符串组成的数组,其中每个元素是一个测试标记。

属性特性

派生自 TestCase 的类可以定义包含 matlab.unittest 框架特定属性的 properties 块,以指定测试内容。

ClassSetupParameter用于定义 TestClassSetup 块中方法的参数化属性的属性块。
MethodSetupParameter用于定义 TestMethodSetup 块中方法的参数化属性的属性块。
TestParameter用于定义 Test 块中方法的参数化属性的属性块。

事件

VerificationFailed

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

VerificationPassed

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

AssertionFailed

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

AssertionPassed

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

FatalAssertionFailed

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

FatalAssertionPassed

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

AssumptionFailed

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

AssumptionPassed

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

ExceptionThrown

引发异常时由 TestRunner 触发。ExceptionEventData 对象传递给侦听程序回调函数。

DiagnosticLogged

调用 log 方法由 TestRunner 触发。LoggedDiagnosticEventData 对象传递给侦听程序回调函数。

示例

全部折叠

使用 TestMethodSetupTestMethodTeardown 方法创建测试用例类 FigurePropertiesTest

classdef FigurePropertiesTest < matlab.unittest.TestCase
 
    properties
        TestFigure
    end
 
    methods(TestMethodSetup)
        function createFigure(testCase)
            testCase.TestFigure = figure;
        end
    end
 
    methods(TestMethodTeardown)
        function closeFigure(testCase)
            close(testCase.TestFigure)
        end
    end
 
    methods(Test)
 
        function defaultCurrentPoint(testCase)
 
            cp = testCase.TestFigure.CurrentPoint;
            testCase.verifyEqual(cp, [0 0], ...
                'Default current point is incorrect')
        end
 
        function defaultCurrentObject(testCase)
            import matlab.unittest.constraints.IsEmpty
 
            co = testCase.TestFigure.CurrentObject;
            testCase.verifyThat(co, IsEmpty, ...
                'Default current object should be empty')
        end
 
    end
 
end

提示

  • 不推荐在 TestCase 子类中定义构造函数或析构函数方法。TestCase 构造函数和析构函数方法不被视为测试内容,不应用于执行验证。例如,SampleTest 类使用构造函数方法和 Test 方法指定验证。然而,构造函数方法中的验证不会产生测试失败。测试框架仅报告一次测试失败,它是在 testSize 方法中执行验证的结果。

    classdef SampleTest < matlab.unittest.TestCase
        methods
            function testCase = SampleTest % Constructor method not recommended
                testCase.verifyEqual(1,2)  % Does not produce a test failure
            end
        end
    
        methods(Test)
           function testSize(testCase)
               testCase.verifySize([1 2 3; 4 5 6],[2 4]) % Produces a test failure
           end
        end
    end
    
在 R2013a 中推出