Main Content

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

matlab.unittest.TestSuite.fromFolder

类: matlab.unittest.TestSuite
包: matlab.unittest

从文件夹中的测试创建 TestSuite 数组

说明

示例

suite = matlab.unittest.TestSuite.fromFolder(folder) 根据 folder 中包含的所有具体 TestSuite 类的所有 Test 方法创建 TestCase 数组,并在 suite 中返回该数组。当测试是基于函数或基于脚本的测试时,只要符合以单词 ‘test’ 开头或结尾(不区分大小写)这个命名约定,TestSuite 数组中就会包含一个 Test 文件。基于类的测试不需要符合此命名约定。该方法不是递归方法,仅返回直接位于指定文件夹中的测试。

运行测试套件时,MATLAB® 会在测试运行期间将当前文件夹更改为用于定义测试内容的文件夹,并将其添加到路径中。

示例

suite = matlab.unittest.TestSuite.fromFolder(folder,s) 根据 folder 中包含的所有 Test 方法创建 TestSuite 数组,这些方法满足选择器 s 指定的条件。

示例

suite = matlab.unittest.TestSuite.fromFolder(___,Name,Value) 使用由一个或多个 Name,Value 对组参数指定的其他选项创建 TestSuite 数组。您可将此语法与上述语法中的任何输入参数一起使用。

输入参数

folder

包含测试的文件夹,指定为字符向量或字符串标量。folder 可以为所需文件夹的绝对路径或相对路径。

s

选择器,指定为 matlab.unittest.selectors 包中类的实例。如果您安装了 MATLAB Test™,则还可以将 s 指定为 matlabtest.selectors.DependsOn 对象。

名称-值参数

IncludingSubfolders

是否包含任何子文件夹(类和私有文件夹除外)中的测试,指定为 falsetruelogical 01)。默认情况下,该值为 false

InvalidFileFoundAction

对文件夹中的无效测试文件采取的操作,指定为 "warn""error"。默认情况下,该值为 "warn"。当值为 "warn" 时,该方法会对文件夹中的每个无效测试文件发出警告,并基于有效文件创建一个测试套件。当值为 "error" 时,如果该方法在文件夹中找到无效的测试文件,将引发错误。

无效测试文件是框架无法从中生成测试套件的测试文件。示例包括:包含语法错误的测试文件、基于函数但缺失局部函数的测试文件,以及具有 Test 方法但向该方法传递了未定义的参数化属性的文件。

ExternalParameters

外部参数,指定为由 matlab.unittest.parameters.Parameter 对象组成的数组。框架使用这些外部参数代替在参数化测试中定义的对应参数。有关详细信息,请参阅在参数化测试中使用外部参数

BaseFolder

包含用于定义测试的文件的文件夹的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素必须包含在 BaseFolder 指定的基本文件夹之一中。如果没有 Test 元素与基本文件夹匹配,将返回空测试套件。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

DependsOn

包含源代码的文件和文件夹的名称,指定为字符串向量、字符向量或字符向量元胞向量。此参数过滤测试套件。为了使测试框架在过滤后的套件中包括测试,定义测试的文件必须依赖指定的源代码。如果没有测试文件依赖源代码,则返回空测试套件。

指定的值必须表示至少一个具有 .m.p.mlx.mlapp.mat.slx 扩展名的现有文件。无法用不支持的扩展名显式指定文件名。如果指定文件夹名称,框架将提取该文件夹中受支持文件的路径。

您必须安装 MATLAB Test 才能使用 DependsOn。有关通过源代码依存关系选择测试的详细信息,请参阅 matlabtest.selectors.DependsOn (MATLAB Test)

示例: ["myFile.m" "myFolder"]

示例: ["folderA" "C:\work\folderB"]

Name

套件元素的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素的 Name 属性必须匹配 Name 指定的名称之一。如果 Test 元素都没有匹配的名称,将返回空测试套件。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

ParameterProperty

定义测试套件元素使用的参数的测试类属性的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素的 Parameterization 属性必须包含 ParameterProperty 指定的至少一个属性名称。如果 Test 元素都没有匹配的属性名称,将返回空测试套件。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

ParameterName

测试套件元素使用的参数的名称,指定为字符串数组、字符向量或字符向量元胞数组。MATLAB 根据定义参数的测试类属性生成参数名称:

  • 如果属性值是元胞数组,则 MATLAB 根据元胞数组元素的值、类型和维度,基于元胞数组的元素生成参数名称。

  • 如果属性值是结构体,则 MATLAB 将根据结构体字段生成参数名称。

ParameterName 参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素的 Parameterization 属性必须包含 ParameterName 指定的至少一个参数名称。如果 Test 元素都没有匹配的参数名称,将返回空测试套件。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

ProcedureName

测试过程的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素的 ProcedureName 属性必须匹配 ProcedureName 指定的过程名称之一。如果 Test 元素都没有匹配的过程名称,将返回空测试套件。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

在基于类的测试中,ProcedureName 是测试方法的名称。在基于函数的测试中,它是包含测试的局部函数的名称。在基于脚本的测试中,它是从测试部分标题生成的名称。与 Name 不同的是,测试过程的名称不包括任何类或包名称或有关参数化的信息。

Superclass

派生测试类的父类的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素的 TestClass 属性必须指向从 Superclass 指定的类之一派生的一个测试类。如果没有 Test 元素与类匹配,将返回空测试套件。

Tag

测试套件元素使用的测试标记的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参数过滤 TestSuite 数组元素。要使测试框架包含套件中的一个测试,Test 元素的 Tags 属性必须包含 Tag 指定的至少一个标记名称。如果 Test 元素都没有匹配的标记名称,将返回空测试套件。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

输出参数

suite

测试集,指定为 matlab.unittest.Test 数组。

属性

Statictrue

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

示例

全部展开

matlab.unittest.TestSuite 类添加到当前导入列表。

import matlab.unittest.TestSuite;
suite = TestSuite.fromFolder(pwd);
result = run(suite);
suite = TestSuite.fromFolder(pwd, 'IncludingSubfolders', true);
result = run(suite);

在您的工作文件夹中,创建新文件夹 myTests。在该文件夹中,创建以下 testZeros.m 测试文件。该类包含四种测试方法。

classdef testZeros < matlab.unittest.TestCase
    properties (TestParameter)
        type = {'single','double','uint16'};
        outSize = struct('s2d',[3 3], 's3d',[2 5 4]);
    end
    
    methods (Test)
        function testClass(testCase, type, outSize)
            testCase.verifyClass(zeros(outSize,type), type);
        end
        
        function testSize(testCase, outSize)
            testCase.verifySize(zeros(outSize), outSize);
        end
        
        function testDefaultClass(testCase)
            testCase.verifyClass(zeros, 'double');
        end
        function testDefaultSize(testCase)
            testCase.verifySize(zeros, [1 1]);
        end
        
        function testDefaultValue(testCase)
            testCase.verifyEqual(zeros,0);
        end
    end
end

测试类包含两种参数化测试方法:testClasstestSize

在命令提示符下,基于使用参数名称 'double' 的所有参数化测试创建测试套件。

import matlab.unittest.TestSuite;
import matlab.unittest.selectors.HasParameter;

suite = TestSuite.fromFolder('myTests', HasParameter('Name','double'));
{suite.Name}'
ans = 

    'testZeros/testClass(type=double,outSize=s2d)'
    'testZeros/testClass(type=double,outSize=s3d)'

基于之前的示例创建 myTests 文件夹和 testZeros.m 类。

为使用参数名称 'double' 的所有测试创建测试套件。

import matlab.unittest.TestSuite;

suite = TestSuite.fromFolder('myTests', 'ParameterName', 'double');
{suite.Name}'
ans = 

    'testZeros/testClass(type=double,outSize=s2d)'
    'testZeros/testClass(type=double,outSize=s3d)'

版本历史记录

在 R2013a 中推出

全部展开