このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MATLAB ユニット テスト プラグインを使用したアーティファクトの生成
MATLAB® ユニット テスト フレームワークでは、matlab.unittest.plugins
パッケージのプラグイン クラスを使用してテスト ランナーをカスタマイズできます。以下のプラグイン クラスのいくつかを使用して、継続的インテグレーション (CI) プラットフォームと互換性のあるテスト レポートおよびアーティファクトを生成できます。
matlab.unittest.plugins.TestReportPlugin
は、テスト ランナーにテスト結果のレポートを作成するように指示するプラグインを作成します。このプラグインを使用して、読み取りとアーカイブが可能なテスト レポートを作成できます。matlab.unittest.plugins.TAPPlugin
は Test Anything Protocol (TAP) ストリームを生成するプラグインを作成します。matlab.unittest.plugins.XMLPlugin
は、JUnit スタイルの XML 出力を生成するプラグインを作成します。matlab.unittest.plugins.CodeCoveragePlugin
は、MATLAB ソース コードのカバレッジ レポートを作成するプラグインを作成します。
また、Simulink® Test™ テスト ケースの実行時に CI 互換のアーティファクトを生成することもできます。詳細については、Output Results for Continuous Integration Systems (Simulink Test)を参照してください。
カスタマイズされたテスト ランナーによるテストの実行
この例では、テスト スイートを作成して、テスト実行の進行状況をレポートして CI 互換のアーティファクトを生成するようにテスト ランナーをカスタマイズする方法を示します。
現在のフォルダー内のファイルに、2 次多項式の根を返す関数 quadraticSolver
を作成します。
function roots = 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 roots(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a); roots(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a); end
quadraticSolver
をテストするために、現在のフォルダーにテスト クラス SolverTest
を作成します。
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
クラスからテスト スイートを作成します。
suite = testsuite("SolverTest");
matlab.unittest.TestRunner.withTextOutput
メソッドを使用して出力を生成する TestRunner
インスタンスを作成します。このメソッドでは、ログ記録される診断の最大詳細レベルと、テスト イベント詳細の表示レベルを設定できます。この例のテスト ランナーは、テスト実行の進行状況を matlab.automation.Verbosity.Detailed
レベル (レベル 3) で表示します。
import matlab.unittest.TestRunner runner = TestRunner.withTextOutput("OutputDetail",3);
出力をファイル testreport.pdf
に送信する TestReportPlugin
インスタンスを作成し、このプラグインをテスト ランナーに追加します。
import matlab.unittest.plugins.TestReportPlugin pdfFile = "testreport.pdf"; p1 = TestReportPlugin.producingPDF(pdfFile); runner.addPlugin(p1)
JUnit スタイルの XML 出力をファイル junittestresults.xml
に書き込む XMLPlugin
インスタンスを作成します。次に、このプラグインをテスト ランナーに追加します。
import matlab.unittest.plugins.XMLPlugin xmlFile = "junittestresults.xml"; p2 = XMLPlugin.producingJUnitFormat(xmlFile); runner.addPlugin(p2)
ファイル quadraticSolver.m
内のソース コードの Cobertura コード カバレッジ レポートを出力するプラグインを作成します。出力をファイル cobertura.xml
に書き込むようにプラグインに命令して、プラグインをテスト ランナーに追加します。
import matlab.unittest.plugins.CodeCoveragePlugin import matlab.unittest.plugins.codecoverage.CoberturaFormat sourceCodeFile = "quadraticSolver.m"; reportFile = "cobertura.xml"; reportFormat = CoberturaFormat(reportFile); p3 = CodeCoveragePlugin.forFile(sourceCodeFile,"Producing",reportFormat); runner.addPlugin(p3)
テストを実行します。
results = runner.run(suite)
Running SolverTest Setting up SolverTest Done setting up SolverTest in 0 seconds Running SolverTest/realSolution Done SolverTest/realSolution in 0.026211 seconds Running SolverTest/imaginarySolution Done SolverTest/imaginarySolution in 0.48367 seconds Running SolverTest/nonnumericInput Done SolverTest/nonnumericInput in 0.51094 seconds Tearing down SolverTest Done tearing down SolverTest in 0 seconds Done SolverTest in 1.0208 seconds __________ Generating test report. Please wait. Preparing content for the test report. Adding content to the test report. Writing test report to file. Test report has been saved to: C:\work\testreport.pdf results = 1×3 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 3 Passed, 0 Failed, 0 Incomplete. 1.0208 seconds testing time.
現在のフォルダー内のファイルをリストします。3 つの指定されたアーティファクトが現在のフォルダーに保存されています。
dir
. .. GenerateArtifactsUsingMATLABUnitTestPluginsExample.m SolverTest.m cobertura.xml html junittestresults.xml metadata quadraticSolver.m testreport.pdf
生成されたアーティファクトを CI プラットフォーム上で処理できます。また、生成されたアーティファクトの内容を表示することもできます。たとえば、PDF のテスト レポートを開きます。
open("testreport.pdf")
参考
クラス
matlab.unittest.TestRunner
|matlab.unittest.plugins.XMLPlugin
|matlab.unittest.plugins.TAPPlugin
|matlab.unittest.plugins.CodeCoveragePlugin
|matlab.unittest.plugins.TestReportPlugin