Main Content

matlab.unittest.plugins.CodeCoveragePlugin.forFolder

クラス: matlab.unittest.plugins.CodeCoveragePlugin
名前空間: matlab.unittest.plugins

フォルダーのコード カバレッジ情報を収集するプラグインを作成

説明

plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(folder) は、指定されたフォルダー内にあるソース コードについてのコード カバレッジ情報を収集し、その情報から HTML コード カバレッジ レポートを生成するプラグインを作成します。

plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(folder,Name,Value) は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,"IncludingSubfolders",true) は、現在のフォルダーおよびそのすべてのサブフォルダー内にあるソース コードの HTML コード カバレッジ レポートを生成するプラグインを作成します。

入力引数

すべて展開する

ソース コードが含まれているフォルダーの名前。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。値は相対パスにすることができますが、相対パスは現在のフォルダー内になければなりません。それ以外の場合、値は絶対パスでなければなりません。

例: pwd

例: "myFolder"

例: ["folderA" "C:\work\folderB"]

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

例: plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,IncludingSubfolders=true)

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,"IncludingSubfolders",true)

folder のサブフォルダー内のソース コードを含めるオプション。数値または logical 0 (false) または 1 (true) として指定します。既定では、プラグインは、folder 内のソース コードのみについてレポートし、サブフォルダーで定義されているソース コードは無視します。

コード カバレッジ情報にアクセスする形式。CoverageReport オブジェクト、CoberturaFormat オブジェクト、CoverageResult オブジェクト、またはこれらの形式オブジェクトの行ベクトルとして指定します。複数の形式オブジェクトを指定した場合、プラグインは各形式の情報へのアクセスを提供します。

例: Producing=matlab.unittest.plugins.codecoverage.CoberturaFormat("report.xml")

収集するカバレッジ メトリクスのレベル。次の表のいずれかの値として指定します。既定では、プラグインはステートメントと関数のカバレッジ メトリクスを収集します。

MetricLevel の値含まれるカバレッジのタイプ
"statement"ステートメント カバレッジ、関数カバレッジ

"decision" (MATLAB® Test™ が必要)

ステートメント カバレッジ、関数カバレッジ、判定カバレッジ

"condition" (MATLAB Test が必要)

ステートメント カバレッジ、関数カバレッジ、判定カバレッジ、条件カバレッジ

"mcdc" (MATLAB Test が必要)

ステートメント カバレッジ、関数カバレッジ、判定カバレッジ、条件カバレッジ、改良条件判定カバレッジ (MC/DC)

カバレッジのタイプの詳細については、Types of Code Coverage for MATLAB Source Code (MATLAB Test)を参照してください。

属性

statictrue

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

ソース コードに対してテスト スイートを実行して HTML 形式の対話型コード カバレッジ レポートを生成します。

現在のフォルダー内の sourceFolder という名前のフォルダーに、関数 quadraticSolver を作成します。この関数は入力として 2 次多項式の係数をとり、多項式の根を返します。係数を非数値として指定した場合、関数はエラーをスローします。

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 をテストするには、現在のフォルダー内の testsFolder という名前のフォルダーに SolverTest クラスを作成します。実数解、虚数解、非数値入力について関数をテストする 3 つの 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

テストを実行してコード カバレッジ レポートを生成するには、まず sourceFolder をパスに追加します。

addpath("sourceFolder")

testsFolder からテスト スイートを作成します。

suite = testsuite("testsFolder");

テスト ランナーを作成し、sourceFolder 内のコードの対話型コード カバレッジ レポートを生成するプラグインを使用してテスト ランナーをカスタマイズします。プラグインの出力を現在のフォルダー内の coverageReport という名前のフォルダーに書き込むように指定します。

import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoverageReport
runner = testrunner("textoutput");
reportFormat = CoverageReport("coverageReport");
p = CodeCoveragePlugin.forFolder("sourceFolder","Producing",reportFormat);
runner.addPlugin(p)

テストを実行します。この例では、すべてのテストがパスし、ソース コードはフル カバレッジの評価を受けます。プラグインにより、現在のフォルダー内の指定フォルダー coverageReport に対話型コード カバレッジ レポートが生成されます。既定では、レポートのメイン ファイルは index.html です。

results = runner.run(suite);
Running SolverTest
...
Done SolverTest
__________

MATLAB code coverage report has been saved to:
 C:\work\coverageReport\index.html

レポートのメイン ファイルを開きます。

open(fullfile("coverageReport","index.html"))

バージョン履歴

R2014b で導入

すべて展開する