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)
基于当前文件夹及其任何子文件夹中的测试创建一个测试套件。
输入参数
包含测试的文件夹的名称,指定为字符串标量或字符向量。如果您指定相对路径,则该路径必须在当前文件夹中。否则,您必须指定完整路径。
示例: pwd
示例: "myFolder"
示例: "C:\work\myFolder"
选择器,指定为 matlab.unittest.selectors.Selector
对象。
示例: 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)
包含 folder
的子文件夹中的测试的选项,指定为数值或逻辑值 0
(false
) 或 1
(true
)。默认情况下,该方法不包括子文件夹中的测试。
对 folder
中的无效测试文件采取的操作,指定为下列值之一:
"warn"
- 该方法会对folder
中的每个无效测试文件发出警告,并基于有效文件创建一个测试套件。"error"
- 如果方法在folder
中找到无效的测试文件,将抛出错误。
无效测试文件是框架无法从中生成测试套件的测试文件。示例包括:包含语法错误的测试文件、基于函数但缺失局部函数的测试文件,以及具有 Test
方法但向该方法传递了未定义的参数化属性的文件。
要在测试中使用的外部参数,指定为由 matlab.unittest.parameters.Parameter
对象组成的数组。使用此参量指定外部参数,而不是参数化测试中的现有参数。有关详细信息,请参阅在参数化测试中使用外部参数。
包含测试文件的基本文件夹的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素必须包含在 BaseFolder
指定的基本文件夹之一中。如果没有 Test
元素与基本文件夹匹配,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
对于命名空间中定义的测试文件,基本文件夹是顶级命名空间文件夹的父级。
包含源代码的文件和文件夹的名称,指定为字符串向量、字符向量或字符向量元胞向量。此参量通过仅包括依赖指定源代码的测试来过滤测试套件。如果没有测试依赖源代码,则返回空测试套件。
指定的值必须表示至少一个现有文件。如果指定文件夹,框架将提取该文件夹中文件的路径。
您必须有 MATLAB® Test™ 许可证才能使用 DependsOn
。有关通过源代码依赖关系选择测试的详细信息,请参阅 matlabtest.selectors.DependsOn
(MATLAB Test)。
示例: DependsOn=["myFile.m" "myFolder"]
示例: DependsOn=["folderA" "C:\work\folderB"]
测试的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Name
属性必须匹配 Name
指定的名称之一。如果 Test
元素都没有匹配的名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
对于一个给定的测试文件,测试的名称唯一地标识测试内容的最小可运行部分。测试名称包括命名空间名称、文件名(不包括扩展名)、过程名称和关于参数化的信息。
定义测试使用的参数的测试类属性的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Parameterization
属性必须包含 ParameterProperty
指定的至少一个属性名称。如果 Test
元素都没有匹配的属性名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
测试使用的参数的名称,指定为字符串数组、字符向量或字符向量元胞数组。MATLAB 根据定义参数的测试类属性生成参数名称。例如:
如果属性值是元胞数组,则 MATLAB 根据元胞数组元素的值、类型和维度,基于元胞数组的元素生成参数名称。
如果属性值是结构体,则 MATLAB 将根据结构体字段生成参数名称。
ParameterName
参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 Parameterization
属性必须包含 ParameterName
指定的至少一个参数名称。如果 Test
元素都没有匹配的参数名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
测试过程的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 ProcedureName
属性必须匹配 ProcedureName
指定的过程名称之一。如果 Test
元素都没有匹配的过程名称,将返回空测试套件。使用通配符 (*
) 以匹配任何数量的字符。使用问号字符 (?
) 只匹配一个字符。
在基于类的测试中,测试过程的名称是包含该测试的 Test
方法的名称。在基于函数的测试中,它是包含测试的局部函数的名称。在基于脚本的测试中,它是从测试部分标题生成的名称。与测试套件元素的名称不同,测试过程的名称不包括任何命名空间名称、文件名或关于参数化的信息。
派生测试类的父类的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,Test
元素的 TestClass
属性必须指向从 Superclass
指定的类之一派生的一个测试类。如果没有 Test
元素与类匹配,将返回空测试套件。
测试使用的标记的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,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 中推出当您使用 DependsOn
名称-值参量或 matlabtest.selectors.DependsOn
类(需要 MATLAB Test)选择基于函数或基于类的测试时,该方法会更准确地选择依赖指定源代码的测试。如果该方法可以确定测试文件中具体哪些测试依赖源代码,则它仅选择依赖的测试并排除其余测试。否则,该方法会包括测试文件中的所有测试。
在以前的版本中,如果文件依赖指定的源代码,则该方法包括测试文件中的所有测试,而不尝试排除不依赖源代码的测试。
如果您有 MATLAB Test 许可证,则可以使用 DependsOn
名称-值参量或 matlabtest.selectors.DependsOn
类指定任何类型的源文件。在以前的版本中,您只能指定扩展名为 .m
、.p
、.mlx
、.mlapp
、.mat
或 .slx
的文件。
如果您有 MATLAB Test 许可证,则可以按测试文件对指定源代码的依赖关系来过滤测试套件。使用 DependsOn
名称-值参量或 matlabtest.selectors.DependsOn
类来指定源文件和文件夹。
要指定测试框架在文件夹中遇到无效测试文件时是发出警告还是抛出错误,请使用 InvalidFileFoundAction
名称-值参量。
当您将非空元胞数组分配给参数化属性时,测试框架会根据元胞数组中元素的值、类型和维度生成参数名称。在以前的版本中,如果属性值是字符向量元胞数组,该框架将根据元胞数组中的值生成参数名称。否则,该框架将参数名称指定为 value1
、value2
、…、valueN
。
如果您的代码使用参数名称来创建或过滤测试套件,请用描述性参数名称替换旧的参数名称。例如,通过用描述性参数名称替换 value1
来更新 suite = testsuite(pwd,"ParameterName","value1")
。
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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)