runtests
运行一组测试
语法
说明
运行当前文件夹中的所有测试,并返回测试结果。testResults = runtests
运行指定的测试。testResults = runtests(tests)
支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,testResults = runtests(___,Name=Value)testResults = runtests(IncludeSubfolders=true) 运行当前文件夹及其任何子文件夹中的所有测试。
当您指定 ReportCoverageFor 名称-值参量时,[ 也会返回代码覆盖率分析的结果。 (自 R2023b 起)testResults,coverageResults] = runtests(___)
示例
在当前工作文件夹中创建一个文件夹 myExample,并进入该文件夹。
在 myExample 文件夹中,创建一个测试脚本 typeTest.m。
%% Test double class exp = 'double'; act = ones; assert(isa(act,exp)) %% Test single class exp = 'single'; act = ones('single'); assert(isa(act,exp)) %% Test uint16 class exp = 'uint16'; act = ones('uint16'); assert(isa(act,exp))
在 myExample 文件夹中,创建一个测试脚本 sizeValueTest.m。
%% Test size exp = [7 13]; act = ones([7 13]); assert(isequal(size(act),exp)) %% Test values act = ones(42); assert(unique(act) == 1)
运行当前文件夹中的所有测试。
runtests
Running sizeValueTest
..
Done sizeValueTest
__________
Running typeTest
...
Done typeTest
__________
ans =
1x5 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
5 Passed, 0 Failed, 0 Incomplete.
0.038077 seconds testing time.
MATLAB® 运行了 5 个测试。2 个测试通过 sizeValueTest,3 个测试通过 typeTest。
创建如下所示的测试文件,并将其保存为 MATLAB 路径上的 runtestsExampleTest.m。
function tests = runtestsExampleTest tests = functiontests(localfunctions); function testFunctionOne(testCase)
运行测试。
results = runtests('runtestsExampleTest.m');
Running runtestsExampleTest . Done runtestsExampleTest __________
如果该文件不存在,请根据前面的示例创建 runtestsExampleTest.m 测试文件。
创建一个子文件夹 tmpTest,并在该文件夹中创建以下 runtestsExampleSubfolderTest.m 测试文件。
function tests = runtestsExampleSubfolderTest tests = functiontests(localfunctions); function testFunctionTwo(testCase)
通过将 IncludeSubfolders 指定为 true,从上述文件夹 tmpTest 中运行这些测试。runtests 函数同时在当前文件夹和子文件夹中运行这些测试。
results = runtests(pwd,IncludeSubfolders=true);
Running runtestsExampleTest . Done runtestsExampleTest __________ Running runtestsExampleSubFolderTest . Done runtestsExampleSubFolderTest __________
如果不指定 IncludeSubfolders 名称-值参量,runtests 不会在子文件夹中运行测试。
results = runtests(pwd);
Running runtestsExampleTest . Done runtestsExampleTest __________
如果您的当前文件夹是工程根文件夹,或您将工程根文件夹的路径传递给 runtests 函数,则 runtests 会运行指定工程中标有 Test 分类的所有测试文件。
此示例假设 C:\projects\project1 处的工程文件夹包含标有 Test 分类的测试文件。将当前文件夹更改为工程根文件夹,并在工程中运行测试。
cd 'C:\projects\project1'
runtests
您也可以通过打开 project1 来运行测试。完成后关闭工程。
proj = openProject('C:\projects\project1');
runtests
close(proj)
另一种方法是,通过将工程根文件夹的完整路径传递给 runtests,在工程中运行测试。
runtests('C:\projects\project1')
在当前文件夹中名为 runInParallelTest.m 的文件中创建此基于函数的测试。
function tests = runInParallelTest tests = functiontests(localfunctions); function testA(testCase) verifyEqual(testCase,5,5); function testB(testCase) verifyTrue(testCase,logical(1)); function testC(testCase) verifySubstring(testCase,'SomeLongText','Long'); function testD(testCase) verifySize(testCase,ones(2,5,3),[2 5 3]); function testE(testCase) verifyGreaterThan(testCase,3,2); function testF(testCase) verifyEmpty(testCase,{},'Cell array is not empty.'); function testG(testCase) verifyMatches(testCase,'Some Text','Some [Tt]ext');
并行运行测试。并行运行测试需要 Parallel Computing Toolbox™。测试框架可能会改变组的顺序和数量,或每个组中所包含的测试。
results = runtests("runInParallelTest.m",UseParallel=true);Split tests into 7 groups and running them on 4 workers. ---------------- Finished Group 2 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 3 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 1 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 4 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 6 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 5 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 7 ---------------- Running runInParallelTest . Done runInParallelTest __________
在您的工作文件夹中,创建 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
完整测试套件包含 11 个测试元素:6 来自 testClass 方法,2 个来自 testSize 方法,1 个分别来自 testDefaultClass、testDefaultSize 和 testDefaultValue 方法。
在命令提示符下,运行 testSize 方法的所有参数化。
runtests('testZeros/testSize')
Running testZeros
..
Done testZeros
__________
ans =
1×2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 0 Failed, 0 Incomplete.
0.022316 seconds testing time.
runtests 函数从 testSize 方法执行两个参数化测试。您也可以使用 runtests('testZeros','ProcedureName','testSize') 指定测试过程名称。
运行使用 outSize 参数属性的测试元素。
runtests('testZeros','ParameterProperty','outSize')
Running testZeros
........
Done testZeros
__________
ans =
1×8 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
8 Passed, 0 Failed, 0 Incomplete.
0.033929 seconds testing time.
runtests 函数执行了八个使用 outSize 参数属性的测试:六个来自 testClass 方法,两个来自 testSize 方法。
运行使用 single 参数名称的测试元素。
runtests('testZeros','ParameterName','single')
Running testZeros
..
Done testZeros
__________
ans =
1×2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 0 Failed, 0 Incomplete.
0.006916 seconds testing time.
runtests 函数执行了两个来自 testClass 方法并使用 outSize 参数名称的测试。
自 R2023b 起
使用 runtests 函数运行您的测试并收集代码覆盖率结果。
在当前文件夹内一个名为 quadraticSolver.m 的文件中创建 quadraticSolver 函数。该函数接受二次多项式的系数作为输入,并返回该多项式的根。如果系数指定为非数值,该函数将抛出错误。
function r = quadraticSolver(a,b,c) % quadraticSolver returns solutions to the % quadratic equation a*x^2 + b*x + c = 0. if ~isa(a,"numeric") || ~isa(b,"numeric") || ~isa(c,"numeric") error("quadraticSolver:InputMustBeNumeric", ... "Coefficients must be numeric.") end r(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a); r(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a); end
要测试 quadraticSolver 函数,请在当前文件夹内名为 SolverTest.m 的文件中创建 SolverTest 类。针对实数解、虚数解和非数值输入定义三个 Test 方法来测试该函数。
classdef SolverTest < matlab.unittest.TestCase methods (Test) function realSolution(testCase) actSolution = quadraticSolver(1,-3,2); expSolution = [2 1]; testCase.verifyEqual(actSolution,expSolution) end function imaginarySolution(testCase) actSolution = quadraticSolver(1,2,10); expSolution = [-1+3i -1-3i]; testCase.verifyEqual(actSolution,expSolution) end function nonnumericInput(testCase) testCase.verifyError(@()quadraticSolver(1,"-3",2), ... "quadraticSolver:InputMustBeNumeric") end end end
运行 SolverTest 类中的测试,并通过指定 ReportCoverageFor 名称-值参量来执行代码覆盖率分析。除了生成代码覆盖率报告之外,要以编程方式访问覆盖率结果,请使用两个输出参量调用 runtests 函数。测试运行后,第一个输出包含测试结果,第二个输出包含覆盖率结果。
[testResults,coverageResults] = runtests("SolverTest", ... "ReportCoverageFor","quadraticSolver.m")
Running SolverTest
...
Done SolverTest
__________
MATLAB code coverage report has been saved to:
C:\Users\hrastega\AppData\Local\Temp\tp50794fb5_477b_45bc_9837_59491d3d2e4b\index.html
testResults =
1×3 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
3 Passed, 0 Failed, 0 Incomplete.
0.021243 seconds testing time.
coverageResults =
Result with properties:
Filename: "C:\work\quadraticSolver.m"
CreationDate: 30-Oct-2023 11:01:29
Coverage summary (use generateHTMLReport to generate an HTML report):
Function: 1/1 (100%)
Statement: 4/4 (100%)
Use coverageSummary to retrieve information from the coverage results.
输入参数
测试,指定为字符串数组、字符向量或字符向量元胞数组。使用此参量指定测试内容。例如,您可以指定测试文件、测试类、包含测试文件的文件夹、包含测试类的命名空间或包含测试文件的工程文件夹。
示例: runtests("myTestFile.m")
示例: runtests(["myTestFile/test1" "myTestFile/test3"])
示例: runtests("myNamespace.MyTestClass")
示例: runtests(pwd)
示例: runtests({'myNamespace.MyTestClass','myTestFile.m',pwd,'myNamespace.innerNamespace'})
示例: runtests("C:\projects\project1")
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: results = runtests(tests,Name="productA_*") 运行名称以 "productA_" 开头的 Test 元素。
测试标识
在子文件夹中运行测试的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。默认情况下,框架只运行指定文件夹(而不包含其子文件夹)中的测试。
在内部命名空间中运行测试的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。默认情况下,框架只运行指定命名空间(而不包含其内部命名空间)中的测试。
包含来自引用工程的测试的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。有关引用工程的详细信息,请参阅大型工程组件化。
对函数正在处理的文件夹或命名空间中的无效测试文件采取的操作,指定为以下值之一:
"warn"- 该函数对文件夹或命名空间中的每个无效测试文件发出警告,并在有效文件中运行测试。"error"- 如果该函数在文件夹或命名空间中发现无效的测试文件,将会抛出错误。
无效的测试文件是框架无法运行的测试文件。示例包括:包含语法错误的测试文件、基于函数但缺失局部函数的测试文件,以及具有 Test 方法但向该方法传递了未定义的参数化属性的文件。
测试过滤
包含测试文件的基本文件夹的名称,指定为字符串数组、字符向量或字符向量元胞数组。此参量过滤测试套件。要使测试框架包含经过过滤的套件中的一个测试,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 元素都没有匹配的标记名称,将返回空测试套件。使用通配符 (*) 以匹配任何数量的字符。使用问号字符 (?) 只匹配一个字符。
测试运行自定义
运行测试时应用严格检查的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。例如,如果测试发出警告,框架会生成鉴定失败。
并行运行测试的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。
默认情况下,runtests 串行运行测试。如果您将 UseParallel 指定为 true,则 runtests 将测试套件分成组,并在以下情况下并行运行这些组:
安装了 Parallel Computing Toolbox。
存在一个打开的并行池,或者在 Parallel Computing Toolbox 设置中启用了自动池创建。
否则,runtests 以串行方式运行测试,而不管 UseParallel 的值是什么。
并行测试可能与其他选项不兼容。例如,如果 UseParallel 和 Debug 都指定为 true,则以串行方式运行测试。当并行运行测试时,测试框架可能会改变组的顺序和数量,或每个组中所包含的测试。
运行测试时应用调试功能的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。例如,如果发生测试失败,框架将暂停执行测试以进入调试模式。
事件详细信息的显示级别,指定为从 0 到 4 的整数标量、matlab.automation.Verbosity 枚举对象或枚举的文本表示。
| 数值表示 | 枚举成员名称 | 详细程度描述 |
|---|---|---|
0 | None | 无信息 |
1 | Terse | 最少的信息 |
2 | Concise | 适中信息量 |
3 | Detailed | 部分补充信息 |
4 | Verbose | 大量补充信息 |
runtests 函数使用 OutputDetail 指定的信息量来显示失败事件和日志记录事件。默认情况下,runtests 显示 matlab.automation.Verbosity.Detailed 级别(级别 3)的失败事件和记录的事件,以及 matlab.automation.Verbosity.Concise 级别(级别 2)的测试运行进度。
为测试运行包含的已记录诊断的详细级别,指定为从 0 到 4 的整数标量、matlab.automation.Verbosity 枚举对象或枚举的文本表示。runtests 函数包含在此级别和更低级别记录的诊断信息。
| 数值表示 | 枚举成员名称 | 详细程度描述 |
|---|---|---|
0 | None | 无信息 |
1 | Terse | 最少的信息 |
2 | Concise | 适中信息量 |
3 | Detailed | 部分补充信息 |
4 | Verbose | 大量补充信息 |
默认情况下,runtests 包含在 matlab.automation.Verbosity.Terse 级别(级别 1)记录的诊断信息。要排除所记录的诊断信息,请将 LoggingLevel 指定为 matlab.automation.Verbosity.None(级别 0)。
记录的诊断信息是您通过调用 log (TestCase) 或 log (Fixture) 方法提供给测试框架的诊断信息。
工件生成
用于代码覆盖率分析的源文件和文件夹的名称,指定为字符串数组、字符向量或字符向量元胞数组。如果指定相对路径,则该路径必须在当前文件夹中。否则,您必须指定完整路径。您可以指定具有 .m、.mlx 或 .mlapp 扩展名的文件夹或文件的路径。
当您指定此参量时,此函数将运行您的测试,并为指定的源代码生成 HTML 代码覆盖率报告。该报告显示由测试执行的源代码的对应部分。如果除了 ReportCoverageFor 之外还指定 coverageResults 输出参量 (自 R2023b 起),则该函数除了生成 HTML 代码覆盖率报告之外,还允许以编程方式访问覆盖率结果。
示例: ReportCoverageFor=pwd
示例: ReportCoverageFor=["myFile.m" "myFolder"]
示例: ReportCoverageFor=["folderA" "C:\work\folderB"]
创建或更新在使用特定鉴定方法的测试中使用的 MAT 文件中的基线数据的选项,指定为数值或逻辑值 0 (false) 或 1 (true)。您必须有 MATLAB Test 或 Simulink® Test 许可证才能使用 GenerateBaselines。
如果将 GenerateBaselines 指定为 true,则必须在测试中使用其中至少一种鉴定方法。
| MATLAB Test | Simulink Test |
|---|---|
verifyEqualsBaseline | verifySignalsMatch |
assumeEqualsBaseline | assumeSignalsMatch |
assertEqualsBaseline | assertSignalsMatch |
fatalAssertEqualsBaseline | fatalAssertSignalsMatch |
有关示例,请参阅在测试管理器中使用基于 MATLAB 的 Simulink 测试 (Simulink Test)。
输出参量
测试结果,以 matlab.unittest.TestResult 对象的行向量形式返回。向量的每个元素都提供关于运行的测试之一的信息。
自 R2023b 起
覆盖率结果,以 matlab.coverage.Result 对象的列向量形式返回。向量的每个元素都提供关于测试所覆盖的源代码中其中一个文件的信息。
将此参量与 ReportCoverageFor 名称-值参量结合使用,以编程方式访问源代码的代码覆盖率分析结果。
提示
当您在测试中使用共享测试脚手架并将
runtests函数的输入指定为字符串数组或字符向量元胞数组时,测试框架会对数组进行排序,以减少共享脚手架的设置和拆解操作。因此,测试运行的顺序可能不同于输入数组中元素的顺序。有关详细信息,请参阅sortByFixtures。当您在远程并行池上运行测试时(需要 MATLAB Parallel Server™ 和 Parallel Computing Toolbox),MATLAB 首先将包含您的测试的本地文件夹复制到远程工作单元。为了最小化与此步骤相关联的开销,请确保这些文件夹只包含与您的测试相关的文件。
扩展功能
要并行运行测试,请将 UseParallel 名称-值参量指定为 true。
有关并行计算的更多一般信息,请参阅使用自动并行支持运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2013b 中推出当使用 DependsOn 名称-值参量(需要 MATLAB Test)选择基于函数或基于类的测试时,该函数会更准确地选择依赖指定源代码的测试。如果该函数可以确定测试文件中具体哪些测试依赖源代码,则它仅选择依赖的测试并排除其余测试。否则,该函数会包括测试文件中的所有测试。
在以前的版本中,如果文件依赖指定的源代码,则该函数包括测试文件中的所有测试,而不尝试排除不依赖源代码的测试。
IncludeSubpackages 名称-值参量现在命名为 IncludeInnerNamespaces。行为保持不变,代码中现有的 IncludeSubpackages 实例继续按预期工作。目前没有停止支持对 IncludeSubpackages 的现有引用的计划。
如果您有 MATLAB Test 许可证,则可以使用 DependsOn 名称-值参量指定任何类型的源文件。在以前的版本中,您只能指定扩展名为 .m、.p、.mlx、.mlapp、.mat 或 .slx 的文件。
要以编程方式访问源代码的代码覆盖率分析结果,请在使用 ReportCoverageFor 名称-值参量时指定第二个输出参量。有关示例,请参阅检索代码覆盖率信息。
您可以按测试文件对指定源代码的依赖关系来过滤测试套件。使用 DependsOn 名称-值参量(需要 MATLAB Test)来指定源文件和文件夹。
如果您安装了 Requirements Toolbox™ 和 MATLAB Test,则可以使用 runtests 函数来运行验证需求集的测试。要运行测试,请将一个或多个需求集文件指定为一个字符串标量或字符串向量。例如,results = runtests("myRequirementSet.slreqx") 运行验证指定的需求集的测试。
要指定测试框架在遇到文件夹或命名空间中的无效测试文件时是发出警告还是抛出错误,请使用 InvalidFileFoundAction 名称-值参量。
当您将非空元胞数组分配给参数化属性时,测试框架会根据元胞数组中元素的值、类型和维度生成参数名称。在以前的版本中,如果属性值是字符向量元胞数组,该框架将根据元胞数组中的值生成参数名称。否则,该框架将参数名称指定为 value1、value2、…、valueN。
如果您的代码使用参数名称来创建或过滤测试套件,请用描述性参数名称替换旧的参数名称。例如,通过用描述性参数名称替换 value1 来更新 suite = testsuite(pwd,"ParameterName","value1")。
IncludeSubfolders 名称-值参量以相同的方式对待文件夹和命名空间。例如,runtests(pwd,IncludeSubfolders=true) 运行当前文件夹及其任何子文件夹(包括命名空间文件夹)中的所有测试。在以前的版本中,IncludeSubfolders 会忽略命名空间文件夹。
runtests 函数会忽略 MATLAB 工程中未定义测试过程的任何文件。例如,如果抽象的 TestCase 类定义文件使用 Test 分类进行标记,则该函数会忽略它。在以前的版本中,如果对除具体测试文件之外的任何文件使用 Test 分类的工程调用 runtests,则 MATLAB 会生成错误。
如果 MATLAB 在没有 Java® 虚拟机 (JVM®) 软件的情况下运行,则 runtests 无法运行 MATLAB 工程中的测试。原因是没有 JVM 软件就无法打开工程。在以前的版本中,当 MATLAB 在没有 JVM 软件的情况下运行时,runtests 基于工程中的测试文件创建一个套件并运行该套件。
您可以通过启动线程工作单元并行池,然后使用 UseParallel 名称-值参量调用 runtests 函数,在基于线程的池上运行测试(需要 Parallel Computing Toolbox)。
在基于线程的池上使用 runtests 运行的测试存在以下限制:
您的测试和源代码只能使用线程工作单元支持的功能。有关基于线程的环境的限制的详细信息,请参阅在基于线程和基于进程的环境之间进行选择 (Parallel Computing Toolbox)。
定义测试内容的文件夹必须位于 MATLAB 搜索路径中。
必须使用类或函数的名称来指定测试名称,不带文件扩展名。
基于线程的池不支持存储测试工件。
基于线程的环境不支持 Simulink。因此,使用 Simulink Test 编写的测试无法在基于线程的池上运行。
您可以在集群和云上并行运行测试(需要 MATLAB Parallel Server 和 Parallel Computing Toolbox)。要在远程并行池上运行测试,请使用 UseParallel 名称-值参量调用 runtests 函数。
您可以创建支持并行运行测试的独立应用程序(需要 MATLAB Compiler™ 和 Parallel Computing Toolbox)。在代码中使用指令 %#function parallel.Pool,以便 MATLAB Compiler 可以找到并打包并行运行测试所需的所有组件。有关详细信息,请参阅编译 MATLAB 单元测试。
要创建或更新在使用特定鉴定方法的测试中使用的 MAT 文件,请使用 GenerateBaselines 名称-值参量。您必须安装 Simulink Test 才能使用 GenerateBaselines。
如果您的当前文件夹是工程根文件夹,或您将工程根文件夹的完整路径传递给 runtests 函数,则该函数会运行指定工程中标有 Test 分类的所有测试文件。
要从引用工程运行测试,请使用 IncludeReferencedProjects 名称-值参量。
要指定要包含在代码覆盖率报告中的源代码,请使用 ReportCoverageFor 名称-值参量。
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)