メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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 内のソース コードのみについてレポートし、サブフォルダーで定義されているソース コードは無視します。

コード カバレッジ情報にアクセスする形式。matlab.unittest.plugins.codecoverage.CoverageFormat オブジェクトの行ベクトルとして指定します。複数の CoverageFormat オブジェクトを指定した場合、プラグインは、対応する各カバレッジ形式の情報へのアクセスを提供します。

プラグインでは次の CoverageFormat サブクラスがサポートされています。

例: 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)を参照してください。

R2024b 以降

適用するカバレッジ フィルターの場所。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。MATLAB Test ライセンスをお持ちの場合は、この引数を使用して、テスト対象のソース コード用に以前に作成されたカバレッジ フィルターを含む MAT ファイルを指定できます。値は現在のフォルダーに対する相対パスまたは絶対パスのいずれかになります。

たとえば、以前にソース コードの未達カバレッジを正当化して、その正当化情報を現在のフォルダー内の myFilters.mat という名前のファイルに保存したとします。myFilters.mat の既存の matlabtest.coverage.Justification オブジェクトを使用してテストを実行し、テストで未達のコード ブロックにフィルターを適用する対話型の HTML コード カバレッジ レポートを生成します。

import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoverageReport

runner = testrunner("textoutput");
format = CoverageReport("report");
plugin = CodeCoveragePlugin.forFolder("myFolder", ...
    Producing=format,MetricLevel="mcdc",Filter="myFilters.mat");
runner.addPlugin(plugin)

suite = testsuite("MyTestClass");
results = runner.run(suite);

メモ

MATLAB プロジェクトを使用して作業を整理している場合は、Filter 引数を指定する必要はありません。テスト フレームワークにより、プロジェクトに保存されているカバレッジ フィルターが自動的に適用されます。

例: Filter="myFilters.mat"

例: Filter="C:\work\myFilters.mat"

属性

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 で導入

すべて展開する