MATLAB 단위 테스트 플러그인을 사용하여 아티팩트 생성하기
MATLAB® 단위 테스트 프레임워크를 사용하면 matlab.unittest.plugins
패키지에 있는 플러그인 클래스를 사용하여 테스트 실행기를 사용자 지정할 수 있습니다. 다음과 같은 플러그인 클래스를 사용하여 지속적 통합(CI) 플랫폼과 호환되는 아티팩트 및 테스트 리포트를 생성할 수 있습니다.
matlab.unittest.plugins.TestReportPlugin
클래스는 테스트 실행기가 테스트 결과 리포트를 생성하도록 지시하는 플러그인을 만듭니다. 이 플러그인을 사용하여 읽고 보관할 수 있는 테스트 리포트를 생성할 수 있습니다.matlab.unittest.plugins.TAPPlugin
클래스는 TAP(Test Anything Protocol) 스트림을 생성하는 플러그인을 만듭니다.matlab.unittest.plugins.XMLPlugin
클래스는 JUnit 스타일의 XML 출력을 생성하는 플러그인을 만듭니다.matlab.unittest.plugins.CodeCoveragePlugin
클래스는 MATLAB 소스 코드용 커버리지 리포트를 생성하는 플러그인을 만듭니다.
Simulink® Test™ 테스트 케이스를 실행할 때 CI 호환 아티팩트를 생성할 수도 있습니다. 자세한 내용은 Output Results for Continuous Integration Systems (Simulink Test) 항목을 참조하십시오.
사용자 지정 테스트 실행기(Test Runner)를 사용하여 테스트 실행하기
이 예제에서는 테스트 스위트를 만들고 테스트 실행기를 사용자 지정하여 테스트 실행 진행률을 보고하고 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)
파일 junittestresults.xml
에 JUnit 스타일의 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.
현재 폴더의 파일을 나열합니다. 세 개의 지정된 아티팩트는 현재 폴더에 저장됩니다.
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 패키지
| matlab.unittest.plugins.TAPPlugin
| matlab.unittest.plugins.XMLPlugin
| matlab.unittest.plugins.CodeCoveragePlugin
| matlab.unittest.plugins.TestReportPlugin