matlab.unittest.TestSuite.fromNamespace
类: matlab.unittest.TestSuite
命名空间: matlab.unittest
语法
说明
suite = matlab.unittest.TestSuite.fromNamespace( 基于指定命名空间中的测试创建一个测试套件,并以 namespace)matlab.unittest.TestSuite 数组形式返回测试套件。
当您调用方法来创建测试套件以及当您运行生成的测试套件时,namespace 的父文件夹必须在路径中。
suite = matlab.unittest.TestSuite.fromNamespace(___, 支持上述语法中的输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,Name,Value)suite = matlab.unittest.TestSuite.fromNamespace("myNamespace","IncludingInnerNamespaces",true) 基于指定命名空间及其任何内部命名空间中的测试创建一个测试套件。
输入参数
包含测试的命名空间的名称,指定为字符串标量或字符向量。
示例: "myNamespace"
示例: "myNamespace.innerNamespace"
选择器,指定为 matlab.unittest.selectors.Selector 对象。
示例: matlab.unittest.selectors.HasTag
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: suite = matlab.unittest.TestSuite.fromNamespace("myNamespace",IncludingInnerNamespaces=true)
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: suite = matlab.unittest.TestSuite.fromNamespace("myNamespace","IncludingInnerNamespaces",true)
包含 namespace 的内部命名空间中的测试的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。默认情况下,该方法不包括内部命名空间中的测试。
对 namespace 中的无效测试文件采取的操作,指定为下列值之一:
"warn"- 该方法会对namespace中的每个无效测试文件发出警告,并基于有效文件创建一个测试套件。"error"- 如果方法在namespace中找到无效的测试文件,将抛出错误。
无效测试文件是框架无法从中生成测试套件的测试文件。示例包括:包含语法错误的测试文件、基于函数但缺失局部函数的测试文件,以及具有 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 元素都没有匹配的标记名称,将返回空测试套件。使用通配符 (*) 以匹配任何数量的字符。使用问号字符 (?) 只匹配一个字符。
示例
通过使用 fromNamespace 静态方法,基于命名空间中的测试创建测试套件。
此示例假设您的当前文件夹中存在名为 myNamespace 的命名空间。如果命名空间不存在,请创建它。
[~,~] = mkdir("+myNamespace")在 myNamespace 中名为 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 函数,请在 myNamespace 内名为 Add5Test.m 的文件中创建 Add5Test 类。该类针对数值和非数值输入测试函数。
classdef Add5Test < matlab.unittest.TestCase properties (TestParameter) type = {'double','single','int8','int32'}; end methods (Test) function numericInput(testCase,type) actual = myNamespace.add5(cast(1,type)); testCase.verifyClass(actual,type) end function nonnumericInput(testCase) testCase.verifyError(@()myNamespace.add5("0"), ... "add5:InputMustBeNumeric") end end end
导入此示例中使用的类。
import matlab.unittest.TestSuite import matlab.unittest.selectors.HasParameter
请确保您的当前文件夹是 myNamespace 的父文件夹。基于 myNamespace 中的测试创建一个测试套件,并显示测试名称。该套件包含在 Add5Test 类中定义的测试。
suite = TestSuite.fromNamespace("myNamespace");
disp({suite.Name}') {'myNamespace.Add5Test/numericInput(type=double)'}
{'myNamespace.Add5Test/numericInput(type=single)'}
{'myNamespace.Add5Test/numericInput(type=int8)' }
{'myNamespace.Add5Test/numericInput(type=int32)' }
{'myNamespace.Add5Test/nonnumericInput' }
基于 myNamespace 创建一个只包含参数化测试的测试套件。
suite1 = TestSuite.fromNamespace("myNamespace",HasParameter);
disp({suite1.Name}') {'myNamespace.Add5Test/numericInput(type=double)'}
{'myNamespace.Add5Test/numericInput(type=single)'}
{'myNamespace.Add5Test/numericInput(type=int8)' }
{'myNamespace.Add5Test/numericInput(type=int32)' }
基于 myNamespace 创建一个测试套件,该测试套件只包括其名称中包含 "nonnumeric" 的测试。
suite2 = TestSuite.fromNamespace("myNamespace","Name","*nonnumeric*"); disp({suite2.Name}')
{'myNamespace.Add5Test/nonnumericInput'}
运行测试套件。
result = run(suite2)
Running myNamespace.Add5Test . Done myNamespace.Add5Test __________
result =
TestResult with properties:
Name: 'myNamespace.Add5Test/nonnumericInput'
Passed: 1
Failed: 0
Incomplete: 0
Duration: 0.0113
Details: [1×1 struct]
Totals:
1 Passed, 0 Failed, 0 Incomplete.
0.011312 seconds testing time.
版本历史记录
在 R2013a 中推出当您使用 DependsOn 名称-值参量或 matlabtest.selectors.DependsOn 类(需要 MATLAB Test)选择基于函数或基于类的测试时,该方法会更准确地选择依赖指定源代码的测试。如果该方法可以确定测试文件中具体哪些测试依赖源代码,则它仅选择依赖的测试并排除其余测试。否则,该方法会包括测试文件中的所有测试。
在以前的版本中,如果文件依赖指定的源代码,则该方法包括测试文件中的所有测试,而不尝试排除不依赖源代码的测试。
方法 matlab.unittest.TestSuite.fromPackage 现在命名为 matlab.unittest.TestSuite.fromNamespace。此方法的行为保持不变,代码中的现有 matlab.unittest.TestSuite.fromPackage 实例继续按预期工作。目前没有停止支持对 matlab.unittest.TestSuite.fromPackage 的现有引用的计划。
IncludingSubpackages 名称-值参量现在命名为 IncludingInnerNamespaces。行为保持不变,代码中现有的 IncludingSubpackages 实例继续按预期工作。目前没有停止支持对 IncludingSubpackages 的现有引用的计划。
如果您有 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 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)