主要内容

matlab.unittest.selectors.HasSuperclass 类

命名空间: matlab.unittest.selectors
超类: matlab.unittest.selectors.Selector

根据测试超类选择 TestSuite 数组元素

描述

matlab.unittest.selectors.HasSuperclass 类提供用于根据测试超类过滤测试套件的选择器。

对于基于类的测试,测试超类是定义该测试的类的所有超类。有关类层次结构的详细信息,请参阅Hierarchies of Classes — Concepts

类属性

Sealed
true

有关类属性的信息,请参阅类属性

创建对象

描述

selector = matlab.unittest.selectors.HasSuperclass(class) 创建一个选择器,用于选择具有指定测试超类的 TestSuite 数组元素。

示例

输入参量

全部展开

测试超类,指定为字符串标量或字符向量。

示例

全部折叠

通过使用 HasSuperclass 类选择测试来创建经过过滤的测试套件。为了简化测试代码,此示例中的测试类使用无条件测试失败作为未实现测试的占位符。

在当前文件夹内一个名为 MyClass.m 的文件中创建 MyClass 类。

classdef MyClass < handle
    properties
        % Properties of MyClass
    end

    methods
        % Methods of MyClass
    end
end

在当前文件夹的名为 Feature1Test.m 的文件中,通过子类化 matlab.unittest.TestCase 类来创建 Feature1Test 测试类。

classdef Feature1Test < matlab.unittest.TestCase
    methods (Test)
        function defaultBehavior(testCase)
            testCase.verifyFail("Add code to test default behavior.")
        end
        function otherBehavior(testCase)
            testCase.verifyFail("Add code to test nondefault behavior.")
        end
    end
end

在当前文件夹的名为 Feature2Test.m 的文件中创建 Feature2Test 测试类。除了 matlab.unittest.TestCase 类之外,此测试类还子类化 MyClass 类。

classdef Feature2Test < matlab.unittest.TestCase & MyClass
    methods (Test)
        function defaultBehavior(testCase)
            testCase.verifyFail("Add code to test default behavior.")
        end
        function otherBehavior(testCase)
            testCase.verifyFail("Add code to test nondefault behavior.")
        end
    end
end

导入此示例中使用的类。

import matlab.unittest.TestSuite
import matlab.unittest.selectors.HasSuperclass

基于测试类创建一个测试套件。然后,显示 TestSuite 数组元素的名称。测试套件包含四个测试。

suite = testsuite(["Feature1Test" "Feature2Test"]);
disp({suite.Name}')
    {'Feature1Test/defaultBehavior'}
    {'Feature1Test/otherBehavior'  }
    {'Feature2Test/defaultBehavior'}
    {'Feature2Test/otherBehavior'  }

选择将 MyClass 作为测试超类的所有测试。由于 Feature2Test 是子类化 MyClass 的唯一测试类,因此经过过滤的测试套件仅包括在 Feature2Test 测试类中定义的测试。

suite1 = suite.selectIf(HasSuperclass("MyClass"));
disp({suite1.Name}')
    {'Feature2Test/defaultBehavior'}
    {'Feature2Test/otherBehavior'  }

通过仅包括将 MyClass 作为测试超类的测试,直接从当前文件夹中的测试创建一个经过过滤的测试套件。

suite2 = TestSuite.fromFolder(pwd,HasSuperclass("MyClass"));
disp({suite2.Name}')
    {'Feature2Test/defaultBehavior'}
    {'Feature2Test/otherBehavior'  }

替代功能

除了 HasSuperclass 类,您还可以使用 Superclass 名称-值参量来创建一个基于测试超类的经过过滤的测试套件。例如:

filteredSuite = matlab.unittest.TestSuite.fromFolder(pwd, ...
    "Superclass","MyClass");

您还可以使用 runtestsrunperf 函数的 Superclass 名称-值参量来选择和运行测试。例如:

results = runtests(pwd,"Superclass","MyClass");

版本历史记录

在 R2018a 中推出