本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

runtests

运行一组测试

说明

results = runtests 运行当前文件夹中的所有测试,并以 TestResult 对象形式返回结果。

示例

results = runtests(tests) 运行一组指定的测试。

示例

results = runtests(tests,Name,Value) 通过由一个或多个 Name,Value 对组参数指定的附加选项运行一组测试。

示例

全部折叠

在当前工作文件夹中创建一个文件夹 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 中运行这些测试。

results = runtests(pwd,'IncludeSubfolders',true);
Running runtestsExampleTest
.
Done runtestsExampleTest
__________

Running runtestsExampleSubFolderTest
.
Done runtestsExampleSubFolderTest
__________

runtests 同时在当前文件夹和子文件夹中运行这些测试。

如果您不指定 runtests 函数的 'IncludeSubfolders' 属性,则它不会在子文件夹中运行测试。

results = runtests(pwd);
Running runtestsExampleTest
.
Done runtestsExampleTest
__________

创建以下测试文件,并以 runInParallelTest.m 的名称将其保存到 MATLAB® 路径上。

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','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 个分别来自 testDefaultClasstestDefaultSizetestDefaultValue 方法。

在命令提示符下,运行 testSize 方法的所有参数化。

runtests('testZeros/testSize')
Running testZeros
..
Done testZeros
__________


ans = 

  1x2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.064305 seconds testing time.

runtests 函数从 testSize 方法执行两个参数化测试。您也可以使用 runtests('testZeros','ProcedureName','testSize') 指定测试过程名称。

运行使用 outSize 参数属性的测试元素。

runtests('testZeros','ParameterProperty','outSize')
Running testZeros
........
Done testZeros
__________


ans = 

  1x8 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   8 Passed, 0 Failed, 0 Incomplete.
   0.057746 seconds testing time.

runtests 函数执行了八个使用 outSize 参数属性的测试:六个来自 testClass 方法,两个来自 testSize 方法。

运行使用 single 参数名称的测试元素。

runtests('testZeros','ParameterName','single')
Running testZeros
..
Done testZeros
__________


ans = 

  1x2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.010084 seconds testing time.

runtests 函数执行了两个来自 testClass 方法并使用 outSize 参数名称的测试。

输入参数

全部折叠

测试套件,指定为字符向量或字符向量元胞数组。元胞数组中的每个字符向量均可包含测试文件的名称、测试类、测试套件元素、包含您的测试类的包、包含您的测试文件的文件夹或者包含测试文件的工程文件夹的名称。

示例: runtests('ATestFile.m')

示例: runtests('ATestFile/aTest')

示例: runtests('mypackage.MyTestClass')

示例: runtests(pwd)

示例: runtests({'mypackage.MyTestClass','ATestFile.m',pwd,'mypackage.subpackage'})

示例: runtests('C:/projects/project1/')

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: runtests(tests,'Name','productA_*') 运行名称以 'productA_' 开头的测试元素。

包含用于定义测试类、函数或脚本的文件的基本文件夹名称,指定为字符向量。此参数筛选 TestSuite 数组元素。对于要包含在套件中的测试元素,它还必须包含在指定的基本文件夹中。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。对于包中定义的测试文件,基本文件夹是顶级包文件夹的父级。

在运行 tests 时应用调试功能的指示符,指定为 falsetrue01)。例如,如果遇到测试失败,框架将暂停执行测试以进入调试模式。

数据类型: logical

指示是否运行子文件夹中测试的指示符,指定为 falsetrue01)。默认情况下,框架只运行指定文件夹(而不包含其子文件夹)中的测试。

数据类型: logical

指示是否运行子包中的测试的指示符,指定为 falsetrue01)。默认情况下,框架只运行指定包(而不包含其子包)中的测试。

数据类型: logical

指示是否包含来自引用工程的测试的指示符,指定为逻辑值 falsetrue。有关引用工程的详细信息,请参阅大型工程组件化

数据类型: logical

针对测试运行包含所记录诊断信息的最高详细级别,指定为介于 0 和 4 之间的整数值或 matlab.unittest.Verbosity 枚举对象。runtests 函数包含在此级别和更低级别记录的诊断信息。整数值对应于 matlab.unittest.Verbosity 枚举的成员。

默认情况下,runtests 包含在 matlab.unittest.Verbosity.Terse 级别(级别 1)记录的诊断信息。要排除所记录的诊断信息,请将 LoggingLevel 指定为 Verbosity.None(级别 0)。

记录的诊断信息是您通过调用 loglog 方法提供给测试框架的诊断信息。

数值表示枚举成员名称详细程度说明
0None

无信息

1Terse

最少的信息

2Concise

适中信息量

3Detailed

部分补充信息

4Verbose

大量补充信息

事件详细信息的显示级别,指定为介于 0 和 4 之间的整数值或 matlab.unittest.Verbosity 枚举对象。整数值对应于 matlab.unittest.Verbosity 枚举的成员。

runtests 函数使用 OutputDetail 指定的信息量来显示失败事件和日志记录事件。默认情况下,runtestsmatlab.unittest.Verbosity.Concise 级别(级别 2)显示事件信息。

数值表示枚举成员名称详细程度说明
0None

无信息

1Terse

最少的信息

2Concise

适中信息量

3Detailed

部分补充信息

4Verbose

大量补充信息

套件元素的名称,指定为字符向量。此参数筛选 TestSuite 数组元素。要使测试框架运行测试,测试元素的 Name 属性必须匹配指定的名称。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

测试套件元素使用的参数的名称,指定为字符向量。此参数筛选 TestSuite 数组元素。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

测试套件元素使用的参数化属性的名称,指定为字符向量。此参数筛选 TestSuite 数组元素。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

测试过程的名称,指定为字符向量。此参数筛选 TestSuite 数组元素。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

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

代码覆盖率报告中要涵盖的源代码的路径,指定为字符向量、字符串数组或字符向量元胞数组。将此选项用于 runtests 可运行指定的测试,并为指定的代码文件生成代码覆盖率报告。该报告会显示测试执行了源代码中的哪些行。

源代码位置可以是一个或多个文件夹的绝对或相对路径,也可以是扩展名为 .m.mlx 的文件的绝对或相对路径。

示例: runtests(tests,'ReportCoverageFor','mySource.m')

数据类型: char | string | cell

在运行 tests 时应用严格检查的指示符,指定为 falsetrue01)。例如,如果测试发出警告,框架会生成验证失败。

数据类型: logical

派生测试类的父类的名称,指定为字符向量或字符串标量。此参数筛选 TestSuite 数组元素。

测试元素标记的名称,指定为字符向量或字符串标量。此参数筛选 TestSuite 数组元素。使用通配符 * 以匹配任何数量的字符。使用问号字符 ? 只匹配一个字符。

并行运行测试的指示符,指定为 falsetrue01)。默认情况下 runtests 串行运行测试。如果您将 UseParallel 设置为 true,则 runtests 函数会将测试套件分成若干单独的组且并行运行这些组,前提是满足以下条件:

  • 安装了 Parallel Computing Toolbox。

  • 存在一个打开的并行池,或者在 Parallel Preferences 中启用了自动池创建。

否则,runtests 以串行方式运行测试,而不管 UseParallel 的值是什么。

注意

并行运行测试需要 Parallel Computing Toolbox。测试框架可能会改变组的顺序和数量,或每个组中所包含的测试。

并行测试可能与其他选项不兼容。例如,如果 'UseParallel''Debug' 都设置为 true,则以串行方式运行测试。

数据类型: logical

在 R2013b 中推出