2013-05-16 8 views
27

मैं ओपनकॉवर और रिपोर्ट जेनरेटर दोनों का उपयोग करने के लिए एक नोब हूं और मैं उन्हें समझने में थोड़ा सा संघर्ष कर रहा हूं कि उन्हें कैसे काम करना है। मैं वीएसएनईटी 2012 'प्रोफेशनल' का उपयोग कर रहा हूं जिसका मतलब है कि मेरे पास निर्मित यूनिट टेस्ट कवरेज टूलींग तक पहुंच नहीं है। मेरे पास रीशर्पर भी स्थापित है, लेकिन 'डॉटकॉवर'यूनिट टेस्ट कवरेज परिणाम देखने के लिए मैं ओपनकॉवर और रिपोर्ट जेनरेटर का उपयोग कैसे करूं?

में एक और उपयोगिता के लिए भुगतान नहीं करना चाहता है ऐसा लगता है कि ओपनकॉवर और रिपोर्ट जेनरेटर मुझे जो चाहिए वह करेगा और मैं उस दस्तावेज़ को देखता हूं जो डाउनलोड किया गया था, लेकिन कुछ समझ में कमी आई है । 1 बंद, जब मैं दोनों के लिए nuget packges डाउनलोड करता हूं, तो मेरा लक्ष्य प्रोजेक्ट क्या होना चाहिए? मेरे पास एक बहु परत ऐप है, इसलिए मैं अपना यूनिट टेस्ट प्रोजेक्ट सही मान रहा हूं, या इससे कोई फर्क पड़ता है? मैं प्रलेखन में देखता हूं, मैं बस कमांड लाइन कमांड का उपयोग करके समाधान के/बिन (मुझे लगता है) पर इशारा कर रहा हूं, इसलिए शायद मुझे इन डाउनलोड को किसी भी विशेष परियोजना में जोड़ने की आवश्यकता नहीं थी (परीक्षण परीक्षण हो सकता था)। क्या कोई मुझे बता सकता है कि मेरे पास यह सही है?

एक बार जब मैंने उन्हें इंस्टॉल किया है, तो मैं यूनिट टेस्ट कवरेज मीट्रिक प्राप्त करने की कोशिश कर रहा हूं, और पैकेज के साथ आने वाले दस्तावेज़ उतने स्पष्ट नहीं हैं जितना मैंने आशा की थी। क्या मेट्रिक्स प्राप्त करने के लिए इन टूल का उपयोग करके चलने वाले कोई भी अच्छे ब्लॉग पोस्ट या लिंक हैं?

+1

मुझे यह जोड़ना होगा कि ओपनकॉवर में सबसे खराब दस्तावेज हैं! – Hamed

उत्तर

37

आप विशेष परियोजना

मैं रिपोर्ट जनरेटर और ओपन कवर का उपयोग भी परीक्षण कवरेज परिणाम उत्पन्न करने के लिए इन जोड़ने की जरूरत नहीं है। -register: उपयोगकर्ता -target: "C: \ प्रोग्राम फ़ाइलें: यह स्क्रिप्ट मैं" \ Program Files (x86) \ OpenCover \ OpenCover.Console.exe सी '

opencover का उपयोग कर codecoverage उत्पन्न करने के लिए इस्तेमाल करते हैं (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 10.0 \ कॉमन 7 \ आईडीई \ mstest.exe "-टेक्स्टर्ग:"/नोइसोलेशन/टेस्टकॉन्टेनर: \ "सी: \\ बिन \ डीबग \ .dll \" /परिणामफाइल: सी: \ रिपोर्ट्स \ MSTest \ .trx "-Filter:" + [] " -mergebyhash आउटपुट: C: \ रिपोर्ट \ MSTest \ projectCoverageReport.xml

ध्यान दें कि उद्धरण तर्क वाई पारित करने के लिए अर्थात् क्या आपके तर्क से बचने के लिए की जरूरत है उस लक्ष्य प्रक्रिया के लिए वें स्थान पर आप \ "i.e. -targetargs:" \ "c: \ program files \"

यह स्क्रिप्ट है जिसे मैं रिपोर्ट जेनरेटर चलाने के लिए उपयोग करता हूं।

C: \ ReportGenerator \ बिन \ ReportGenerator.exe -reports: "C: \ रिपोर्ट \ MSTest \ projectCoverageReport.xml" -targetdir: "C: \ रिपोर्ट \ CodeCoverage"

आशा इससे मदद मिलती है।

+0

क्या परीक्षण परियोजना या मुख्य परियोजना के लिए <आपका प्रोजेक्ट पथ> और <प्रोजेक्ट नाम> है? – reggaeguitar

+0

परीक्षण परियोजना – SonalKhodiyar

9

इन ओपन सोर्स टूल का उपयोग करने के कई सालों बाद, मैंने आखिरकार यूनिट टेस्ट कवरेज मीट्रिक उत्पन्न करने के लिए ओपनकॉवर और रिपोर्टकॉवर का उपयोग करने के तरीके पर एक व्यापक पोस्ट बनाया।

पद का वर्णन करता है .bat फ़ाइल और आदेश निम्न कार्य करने के लिए आवश्यक बनाने का तरीका:

  • OpenCover
  • का उपयोग कर इकाई परीक्षण मीट्रिक का उत्पादन रिपोर्ट ReportGenerator
  • का उपयोग कर एक .htm रिपोर्ट जनरेट कर रहा है उत्पन्न इकाई परीक्षण कवरेज मीट्रिक की व्याख्या करने के लिए आउटपुट डेटा का विश्लेषण

Using OpenCover and ReportGenerator to get Unit Testing Code Coverage Metrics in .NET

3

धन्यवाद आपके ट्यूटोरियल के लिए @atconway। मैंने भविष्य में अपग्रेड को कम करने के लिए, और परियोजना परिवर्तनों को कम करने के लिए अपनी .bat स्क्रिप्ट को थोड़ा अपडेट किया है।

को संक्षेप में NUnit साथ OpenCover उपयोग करने के लिए आप इन nugets अपनी परियोजना में जोड़ने के लिए है:

  • OpenCover
  • NUnit.ConsoleRunner
  • ReportGenerator डैनियल पाल्मे

और यहाँ से है अद्यतन .bat फ़ाइल। इसे चलाने के लिए बस "सेटिंग्स" संपादित करें और अपनी प्रोजेक्ट की रूट में .bat फ़ाइल के रूप में स्क्रिप्ट को सहेजें।

@echo off 
REM ** Be sure to install these nugets: 
REM ** NUnit.ConsoleRunner 
REM ** OpenCover 
REM ** ReportGenerator 
REM ** 
REM ** All paths should be entered without quotes 

REM ** SET TestResultsFileProjectName=CalculatorResults 
SET TestResultsFileProjectName=<ANY_NAME> 

REM ** SET DLLToTestRelativePath=Calculator\bin\Debug\MyCalc.dll 
SET DLLToTestRelativePath=<VALID_PATH> 

REM ** Filters Wiki https://github.com/opencover/opencover/wiki/Usage 
REM ** SET Filters=+[Calculator]* -[Calculator]CalculatorTests.* 
SET Filters=<VALID_FILTERS> 

SET OpenCoverFolderName=OpenCover.4.6.519 
SET NUnitConsoleRunnerFolderName=NUnit.ConsoleRunner.3.6.1 
SET ReportGeneratorFolderName=ReportGenerator.2.5.6 

REM ***************************************************************** 

REM Create a 'GeneratedReports' folder if it does not exist 
if not exist "%~dp0GeneratedReports" mkdir "%~dp0GeneratedReports" 

REM Remove any previous test execution files to prevent issues overwriting 
IF EXIST "%~dp0%TestResultsFileProjectName%.trx" del "%~dp0%TestResultsFileProjectName%.trx%" 

REM Remove any previously created test output directories 
CD %~dp0 
FOR /D /R %%X IN (%USERNAME%*) DO RD /S /Q "%%X" 

REM Run the tests against the targeted output 
call :RunOpenCoverUnitTestMetrics 

REM Generate the report output based on the test results 
if %errorlevel% equ 0 (
call :RunReportGeneratorOutput 
) 

REM Launch the report 
if %errorlevel% equ 0 (
call :RunLaunchReport 
) 
exit /b %errorlevel% 

:RunOpenCoverUnitTestMetrics 
"%~dp0packages\%OpenCoverFolderName%\tools\OpenCover.Console.exe"^
-register:user^
-target:"%~dp0packages\%NUnitConsoleRunnerFolderName%\tools\nunit3-console.exe"^
-targetargs:"--noheader \"%~dp0%DLLToTestRelativePath%\""^
-filter:"%Filters%"^
-mergebyhash^
-skipautoprops^
-excludebyattribute:"System.CodeDom.Compiler.GeneratedCodeAttribute"^
-output:"%~dp0GeneratedReports\%TestResultsFileProjectName%.xml" 
exit /b %errorlevel% 

:RunReportGeneratorOutput 
"%~dp0packages\%ReportGeneratorFolderName%\tools\ReportGenerator.exe"^
-reports:"%~dp0GeneratedReports\%TestResultsFileProjectName%.xml"^
-targetdir:"%~dp0GeneratedReports\ReportGenerator Output" 
exit /b %errorlevel% 

:RunLaunchReport 
start "report" "%~dp0GeneratedReports\ReportGenerator Output\index.htm" 
exit /b %errorlevel% 
0

एकाधिक परीक्षण कंटेनर के लिए ओपनवर को कॉन्फ़िगर करना एक नरक है।

यह मेरी स्मार्ट पावरहेल स्क्रिप्ट का उपयोग करें, यह आपको कुछ विचार दे सकता है। अपने परीक्षण DLLs खोजने के लिए और जो उत्पादन के लिए शामिल करने के लिए नामस्थान के लिए कैसे:

https://github.com/rpokrovskij/opencover4vs.ps1/blob/master/opencover4vs.ps1

आप दो प्रमुख बातें विन्यस्त करने की जरूरत। मैं इसे इस तरह से करता हूं:

$TestDllsPatterns = @(,'*\bin\Debug\Vse.*.Test.dll') 
$TestableCodeNamespacePatterns = @(,'*') 

नोट, मेरे परीक्षण उपसर्ग Vse से शुरू होते हैं। Debug\netcore1.1\Vse जैसे फ़ोल्डरों से कोर nUnit परीक्षणों को फ़िल्टर करने के लिए आपको Debug\Prefix कुंजी की आवश्यकता है।

संबंधित मुद्दे