Matlab UnitTest覆盖范围

时间:2013-05-07 17:20:56

标签: matlab unit-testing code-coverage

Matlab在2013a有一个新的单元测试框架。我发现它非常有用,但随着我的模块的增长,我想知道我已经实现了多少覆盖。我如何衡量我的单位测试覆盖率,类似于覆盖率等等?

2 个答案:

答案 0 :(得分:10)

Release 2014b提供plugin来生成代码覆盖率报告。例如:

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.CodeCoveragePlugin;

% Create a TestSuite array
suite = TestSuite.fromFolder(testFolder);

% Create a runner and add the code coverage plugin
runner = TestRunner.withTextOutput;
runner.addPlugin(CodeCoveragePlugin.forFolder(sourceFolder));

% Run the suite. This opens a code coverage report when done testing.
result = runner.run(suite)

请注意,应在源代码上运行coverage报告,而测试套件是从单独的文件夹生成的。如果您在链接示例中使用pwd,则会获得刚刚运行的测试的覆盖率报告。

答案 1 :(得分:8)

也许我的评论不够明确。例如,让我们创建简单的函数:

文件夹/ test1.m

x = zeros(100,1);
for i=1:100
    if rand < 0.8
        x(i) = 1;
    else
        x(i) = 2;
    end
end

现在运行并分析脚本:

>> profile on
>> test1
>> profile off

接下来,从“当前文件夹”窗口小部件中,选择“报告&gt;覆盖率报告”:

coverage_report

这将为您提供当前文件夹中所有功能/脚本的覆盖率报告:

report

点击链接将打开常规个人资料查看器:

prof_viewer

显然,您可以直接从个人资料查看器中为每个文件选择上述选项...