matlab.unittest.TestSuite.fromFolder
类: matlab.unittest.TestSuite
命名空间: matlab.unittest
基于文件夹中的测试创建测试套件
语法
说明
suite = matlab.unittest.TestSuite.fromFolder(
基于指定文件夹中的测试创建一个测试套件,并以 folder
)matlab.unittest.TestSuite
数组形式返回测试套件。
为了运行测试套件,测试框架会在测试运行期间将当前文件夹更改为用于定义测试内容的文件夹,并将其添加到路径中。
suite = matlab.unittest.TestSuite.fromFolder(___,
支持上述语法中的输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,Name,Value
)suite = matlab.unittest.TestSuite.fromFolder(pwd,"IncludingSubfolders",true)
基于当前文件夹及其任何子文件夹中的测试创建一个测试套件。
输入参数
folder
— 包含测试的文件夹的名称
字符串标量 | 字符向量
包含测试的文件夹的名称,指定为字符串标量或字符向量。如果您指定相对路径,则该路径必须在当前文件夹中。否则,您必须指定完整路径。
示例: pwd
示例: "myFolder"
示例: "C:\work\myFolder"
selector
— 选择器
选择器类的实例
选择器,指定为 matlab.unittest.selectors
包中类的实例。如果您有 MATLAB® Test™ 许可证,您还可以将 selector
指定为 matlabtest.selectors.DependsOn
实例。
示例: matlab.unittest.selectors.HasTag
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: suite = matlab.unittest.TestSuite.fromFolder(pwd,IncludingSubfolders=true)
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: suite = matlab.unittest.TestSuite.fromFolder(pwd,"IncludingSubfolders",true)
IncludingSubfolders
— 是否包括子文件夹中的测试
false
或 0
(默认) | true
或 1
是否包括 folder
的子文件夹中的测试,指定为数值或逻辑值 0
(false
) 或 1
(true
)。默认情况下,该方法不包括子文件夹中的测试。
InvalidFileFoundAction
— 对无效测试文件采取的操作
"warn"
(默认) | "error"
对 folder
中的无效测试文件采取的操作,指定为 "warn"
或 "error"
。
"warn"
- 该方法会对folder
中的每个无效测试文件发出警告,并基于有效文件创建一个测试套件。"error"
- 如果方法在folder
中找到无效的测试文件,将引发错误。
无效测试文件是框架无法从中生成测试套件的测试文件。示例包括:包含语法错误的测试文件、基于函数但缺失局部函数的测试文件,以及具有 Test
方法但向该方法传递了未定义的参数化属性的文件。
ExternalParameters
— 要在测试中使用的外部参数
matlab.unittest.parameters.Parameter
对象数组
要在测试中使用的外部参数,指定为由 matlab.unittest.parameters.Parameter
对象组成的数组。使用此参量指定外部参数,而不是参数化测试中的现有参数。有关详细信息,请参阅在参数化测试中使用外部参数。
BaseFolder
— 基本文件夹的名称
字符串数组 | 字符向量 | 字符向量元胞数组
包含测试文件的基本文件夹的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素必须包含在 BaseFolder
指定的基本文件夹之一中。如果没有 Test
元素与基本文件夹匹配,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
对于包中定义的测试文件,基本文件夹是顶级包文件夹的父级。
DependsOn
— 包含源代码的文件和文件夹的名称
字符串向量 | 字符向量 | 字符向量元胞向量
包含源代码的文件和文件夹的名称,指定为字符串向量、字符向量或字符向量元胞向量。此参量过滤测试套件。为了使测试框架在过滤后的套件中包括测试,定义测试的文件必须依赖指定的源代码。如果没有测试文件依赖源代码,则返回空测试套件。
指定的值必须表示至少一个具有 .m
、.p
、.mlx
、.mlapp
、.mat
或 .slx
扩展名的现有文件。无法用不支持的扩展名显式指定文件名。如果指定文件夹名称,框架将提取该文件夹中受支持文件的路径。
您必须有 MATLAB Test 许可证才能使用 DependsOn
。有关通过源代码依存关系选择测试的详细信息,请参阅 matlabtest.selectors.DependsOn
(MATLAB Test)。
示例: DependsOn=["myFile.m" "myFolder"]
示例: DependsOn=["folderA" "C:\work\folderB"]
Name
— 测试名称
字符串数组 | 字符向量 | 字符向量元胞数组
测试的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Name
属性必须匹配 Name
指定的名称之一。如果 Test
元素都没有匹配的名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
对于一个给定的测试文件,测试的名称唯一地标识测试内容的最小可运行部分。测试名称包括包名称、文件名(不包括扩展名)、过程名称和关于参数化的信息。
ParameterProperty
— 参数化属性的名称
字符串数组 | 字符向量 | 字符向量元胞数组
定义测试使用的参数的测试类属性的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Parameterization
属性必须包含 ParameterProperty
指定的至少一个属性名称。如果 Test
元素都没有匹配的属性名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
ParameterName
— 参数名称
字符串数组 | 字符向量 | 字符向量元胞数组
测试使用的参数的名称,指定为字符串数组、字符向量或字符向量元胞数组。MATLAB 根据定义参数的测试类属性生成参数名称:
如果属性值是元胞数组,则 MATLAB 根据元胞数组元素的值、类型和维度,基于元胞数组的元素生成参数名称。
如果属性值是结构体,则 MATLAB 将根据结构体字段生成参数名称。
ParameterName
参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Parameterization
属性必须包含 ParameterName
指定的至少一个参数名称。如果 Test
元素都没有匹配的参数名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
ProcedureName
— 测试过程的名称
字符串数组 | 字符向量 | 字符向量元胞数组
测试过程的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 ProcedureName
属性必须匹配 ProcedureName
指定的过程名称之一。如果 Test
元素都没有匹配的过程名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
在基于类的测试中,测试过程的名称是包含该测试的 Test
方法的名称。在基于函数的测试中,它是包含测试的局部函数的名称。在基于脚本的测试中,它是从测试部分标题生成的名称。与测试套件元素的名称不同,测试过程的名称不包括任何包名称、文件名或关于参数化的信息。
Superclass
— 派生测试类的父类的名称
字符串数组 | 字符向量 | 字符向量元胞数组
派生测试类的父类的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 TestClass
属性必须指向从 Superclass
指定的类之一派生的一个测试类。如果没有 Test
元素与类匹配,将返回空测试套件。
Tag
— 标记的名称
字符串数组 | 字符向量 | 字符向量元胞数组
测试使用的标记的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Tags
属性必须包含 Tag
指定的至少一个标记名称。如果 Test
元素都没有匹配的标记名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
示例
基于文件夹中的测试创建测试套件
通过使用 fromFolder
静态方法,基于文件夹中的测试创建测试套件。
此示例假设您的当前文件夹中存在名为 myFolder
的文件夹。如果该文件夹不存在,请创建它。
[~,~] = mkdir("myFolder")
在 myFolder
文件夹下名为 add5.m
的文件中,创建 add5
函数。该函数接受数值输入,并将其增加 5。如果使用非数值输入调用该函数,该函数将引发错误。
function y = add5(x) % add5 - Increment input by 5 if ~isa(x,"numeric") error("add5:InputMustBeNumeric","Input must be numeric.") end y = x + 5; end
要测试 add5
函数,请在 myFolder
文件夹内名为 Add5Test.m
的文件中创建 Add5Test
类。该类针对数值和非数值输入测试函数。
classdef Add5Test < matlab.unittest.TestCase properties (TestParameter) type = {'double','single','int8','int32'}; end methods (Test) function numericInput(testCase,type) actual = add5(cast(1,type)); testCase.verifyClass(actual,type) end function nonnumericInput(testCase) testCase.verifyError(@() add5("0"),"add5:InputMustBeNumeric") end end end
导入此示例中使用的类。
import matlab.unittest.TestSuite import matlab.unittest.selectors.HasParameter
请确保您的当前文件夹是 myFolder
的父文件夹。基于 myFolder
文件夹中的测试创建一个测试套件,并显示测试名称。该套件包含在 Add5Test
类中定义的测试。
suite = TestSuite.fromFolder("myFolder");
disp({suite.Name}')
{'Add5Test/numericInput(type=double)'} {'Add5Test/numericInput(type=single)'} {'Add5Test/numericInput(type=int8)' } {'Add5Test/numericInput(type=int32)' } {'Add5Test/nonnumericInput' }
基于 myFolder
文件夹创建一个只包含参数化测试的测试套件。
suite1 = TestSuite.fromFolder("myFolder",HasParameter);
disp({suite1.Name}')
{'Add5Test/numericInput(type=double)'} {'Add5Test/numericInput(type=single)'} {'Add5Test/numericInput(type=int8)' } {'Add5Test/numericInput(type=int32)' }
基于 myFolder
文件夹创建一个测试套件,该套件仅包括其名称包含 "nonnumeric"
的测试。
suite2 = TestSuite.fromFolder("myFolder","Name","*nonnumeric*"); disp({suite2.Name}')
{'Add5Test/nonnumericInput'}
版本历史记录
在 R2013a 中推出R2023a: 按源代码依存关系过滤测试套件
如果您有 MATLAB Test 许可证,则可以按测试文件对指定源代码的依存关系来过滤测试套件。使用 DependsOn
名称-值参量或 matlabtest.selectors.DependsOn
类来指定源文件和文件夹。
R2022b: 指定要针对无效测试文件采取的操作
要指定测试框架在文件夹中遇到无效测试文件时是发出警告还是引发错误,请使用 InvalidFileFoundAction
名称-值参量。
R2022b: 从元胞数组生成的参数名称更具描述性
当您将非空元胞数组分配给参数化属性时,测试框架会根据元胞数组中元素的值、类型和维度生成参数名称。在以前的版本中,如果属性值是字符向量元胞数组,该框架将根据元胞数组中的值生成参数名称。否则,该框架将参数名称指定为 value1
、value2
、…、valueN
。
如果您的代码使用参数名称来创建或过滤测试套件,请用描述性参数名称替换旧的参数名称。例如,通过用描述性参数名称替换 value1
来更新 suite = testsuite(pwd,"ParameterName","value1")
。
R2022a: matlab.unittest.TestSuite.fromFolder
在创建测试套件时包括包文件夹中的测试
matlab.unittest.TestSuite.fromFolder
方法以同样的方式对待文件夹和包,并且在创建测试套件时包括在包文件夹中定义的测试。例如,suite = matlab.unittest.TestSuite.fromFolder(pwd,IncludingSubfolders=true)
基于当前文件夹及其任何子文件夹(包括包文件夹)中的所有测试文件创建一个套件。在以前的版本中,该方法会忽略在包文件夹及其子文件夹中定义的任何测试。
当 testsuite
、runtests
和 runperf
函数对包含测试的文件夹进行操作时,此行为更改也适用于这些函数。通过一致对待文件夹和包,基于文件夹及其子文件夹中的所有测试文件创建一个套件变得更加方便,并且独立于文件夹结构。
要排除在包中定义的测试,请过滤 fromFolder
正在构造或返回的套件。例如,创建一个经过过滤的测试套件,其中包含名称中不包含任何圆点(即不引用任何包)的测试。
import matlab.unittest.TestSuite import matlab.unittest.selectors.HasName import matlab.unittest.constraints.ContainsSubstring suite = TestSuite.fromFolder(pwd,HasName(~ContainsSubstring(".")), ... IncludingSubfolders=true);
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)