っPartCover作
-
21-08-2019 - |
質問
試したいと思いPartCoverコードします。私は走Visual Studio2008のプロフェッショナルでMSTest.のプロフェッショナル版を含まないチームの試験ツールのようなコードします。
うPartCoverのだけが得られます。のPartCover.ブラウザの"俺のMSTest実行っ指摘の引数マtests.dllかたを指す私の作業ディレクトリのTestResultsフォルダ、または、エラー:
"レポートは空になります。チェック設定、実行対象です。
どうなるかはわからないがします。
編集
ももいらっしゃってます。第一に、僕が入っルールです。第二に、私た空間になっ論争することができます。の空間牧志公設市場と太平通り商店街もエラーが表示されていない。
解決
うん、私もこの問題を抱えていました。 ルールフィールドのフォーマットを確認します。
ブラウザでのようなものを追加します:
+[MyNamespace.MyAssemblyName]*
あなたが指定したアセンブリ名はあなたがカバーしたい種類を格納しているアセンブリの名前です。でオフに起動します。
+[*]*
とpartcoverは喜んであなたが参照するライブラリと上とで、あなたのユニットテストプロジェクトのためのカバレッジ指標が得られます。
コマンドラインからは、--include引数で同じパターンを指定します。
--include=[MyNamespace.MyAssembly]*
また、含まれている名前空間または型を除外したり、レポートにするためにカバレッジデータを取得し、名前空間内からその種類を制限することができます。ルールの形式は、マニュアル(アセンブリ名とクラス名を構成するワイルドカード文字としてアスタリスクからなる、とてもきれい限られたが、必要なデータを取得するのに十分)によると、正規表現構文のサブセットです。マニュアルのルール上のセクションをご覧ください。あなたはマニュアルを持っていない場合は、はsourceforgeするからそれをダウンロードします。
他のヒント
しい思いをしてきているの諸施策に取り組み最後に取得しPartCover働きを呼び出していることからNAntます。収集したお世話になりたいと思いまなければいけなかったこちらその他の便宜;場合がありますので、ご注意このた回答をさせていただきその他で過ごしたトンの間で。
まず、答えはないたい場合、ここでお使いのOSが64ビットする必要がありまrun[最も最近のWindows SDK]\bin\CorFlags.exe [PartCoverイdir]\PartCover.exe /32BIT+/力
これは、後PartCoverインストールします。変わってしまうので実行し、警告するように組み立てが必要となる再署名がないので(最終的には)の現代美術館などがあります。りますのでご注意くもののように見えCorFlagsないかと警告していて、署名、変わった。エグゼクするだけではない点が明確にした。
次に、再度ごOSは64ビットの使途(または他の試験exe)とPartCoverま呼び出す必要はありバージョンを明示的に作成のためのx86.中途の場合は、どちらかというとnunit-console-x86.exe.呼び出しnunit-console.exe だけハ永遠に私の後、この仕事をやってきて、なに戻ります。
次に、もの答えはどちPartCover2.3、devを構築した不静も走CorFlagsます。しかし、2.2。
次に、時PartCover.exe 呼び出しの書式の引数は --arg-名---な--=arg-氏名(dash dashスペースarg名なdash dash equals arg名);のPartCover docsい道の両方が等しいサインだけでな作業でした。
後に、PartCoverた作業からョンをインストールして下さい。を使って設定ファイルを使用することができるPartCoverブラウザのUIアプリに保存設定ファイルを利用できますから、コマンドライン)この引数を指定した設定ファイルのフルパス、報告書の出力ファイル名のフルパス。
こが悪かったですが呼び出されたからNAntスクリプトので、私はやっと、argに価値のために引用すること...利用のHTML符号化されたトークンはます。このように...
NAntを抜粋した:
<property name="PartCoverExePath" value="c:\Program Files (x86)\PartCover .NET 2\PartCover.exe" />
<property name="PartCoverWorkPath" value="c:\Projects\MyProject\trunk\CI\" />
<property name="PartCoverSettingsFileName" value="PartCover.Settings.xml" />
<property name="PartCoverReportFileName" value="PartCover.Report.xml" />
<target name="MyTarget">
<exec program="${PartCoverExePath}">
<arg value="--settings "${PartCoverWorkPath}${PartCoverSettingsFileName}"" />
<arg value="--output "${PartCoverWorkPath}${PartCoverReportFileName}"" />
</exec>
</target>
のPartCover設定ファイル:
<PartCoverSettings>
<Target>C:\CI\Binaries\NUnit2.5.2\bin\net-2.0\nunit-console-x86.exe</Target>
<TargetWorkDir>c:\Projects\MyProject\trunk\MyProject.Test\bin\Debug</TargetWorkDir>
<TargetArgs>MyProject.Test.dll</TargetArgs>
<Rule>+[*]*</Rule>
<Rule>-[log4net*]*</Rule>
<Rule>-[nunit*]*</Rule>
<Rule>-[MyProject.Test*]*</Rule>
</PartCoverSettings>
あー!このまま保存誰かの悩ました。
私はPartCoverの報告と同じ問題を抱えていました。だから私はそれが正しい動作させるためにしようとしていると私はちょうど問題がPartCover分布が付属して2つのXSLTファイルであることを発見しました。
私は、これらのファイルを修正し、今ではすべてが私のために正常に動作してます:
アセンブリによってのレポートの
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="cov0style" select="'background:#E79090;text-align:right;'"/>
<xsl:variable name="cov20style" select="'background:#D79797;text-align:right;'"/>
<xsl:variable name="cov40style" select="'background:#D7A0A0;text-align:right;'"/>
<xsl:variable name="cov60style" select="'background:#C7A7A7;text-align:right;'"/>
<xsl:variable name="cov80style" select="'background:#C0B0B0;text-align:right;'"/>
<xsl:variable name="cov100style" select="'background:#D7D7D7;text-align:right;'"/>
<table style="border-collapse: collapse;">
<tr style="font-weight:bold; background:whitesmoke;">
<td colspan="2">Coverage by assembly</td>
</tr>
<xsl:variable name="asms" select="/PartCoverReport/Assembly"/>
<xsl:for-each select="$asms">
<xsl:variable name="current-asm-node" select="."/>
<tr>
<xsl:element name="td">
<xsl:attribute name="style">background:ghostwhite; padding: 5px 30px 5px 5px;</xsl:attribute>
<xsl:value-of select="$current-asm-node/@name"/>
</xsl:element>
<xsl:variable name="codeSize" select="sum(/PartCoverReport/Type[@asmref=$current-asm-node/@id]/Method/pt/@len)+0"/>
<xsl:variable name="coveredCodeSize" select="sum(/PartCoverReport/Type[@asmref=$current-asm-node/@id]/Method/pt[@visit>0]/@len)+0"/>
<xsl:element name="td">
<xsl:if test="$codeSize=0">
<xsl:attribute name="style">
<xsl:value-of select="$cov0style"/>
</xsl:attribute>
0%
</xsl:if>
<xsl:if test="$codeSize > 0">
<xsl:variable name="coverage" select="ceiling(100 * $coveredCodeSize div $codeSize)"/>
<xsl:if test="$coverage >= 0 and $coverage < 20">
<xsl:attribute name="style">
<xsl:value-of select="$cov20style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 20 and $coverage < 40">
<xsl:attribute name="style">
<xsl:value-of select="$cov40style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 40 and $coverage < 60">
<xsl:attribute name="style">
<xsl:value-of select="$cov60style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 60 and $coverage < 80">
<xsl:attribute name="style">
<xsl:value-of select="$cov80style"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="$coverage >= 80">
<xsl:attribute name="style">
<xsl:value-of select="$cov100style"/>
</xsl:attribute>
</xsl:if>
<xsl:value-of select="$coverage"/>%
</xsl:if>
</xsl:element>
</tr>
</xsl:for-each>
</table>
のクラス別レポートの
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<xsl:variable name="cov0style" select="'background:#FF4040;text-align:right;'"/>
<xsl:variable name="cov20style" select="'background:#F06060;text-align:right;'"/>
<xsl:variable name="cov40style" select="'background:#E78080;text-align:right;'"/>
<xsl:variable name="cov60style" select="'background:#E0A0A0;text-align:right;'"/>
<xsl:variable name="cov80style" select="'background:#D7B0B0;text-align:right;'"/>
<xsl:variable name="cov100style" select="'background:#E0E0E0;text-align:right;'"/>
<table style="border-collapse: collapse;">
<tr style="font-weight:bold; background:whitesmoke;"><td colspan="2">Coverage by class</td></tr>
<xsl:for-each select="/PartCoverReport/Type">
<tr>
<xsl:element name="td">
<xsl:attribute name="style">background:ghostwhite; padding: 5px 30px 5px 5px;</xsl:attribute>
<xsl:value-of select="@name"/>
</xsl:element>
<xsl:variable name="codeSize" select="sum(./Method/pt/@len)+0"/>
<xsl:variable name="coveredCodeSize" select="sum(./Method/pt[@visit>0]/@len)+0"/>
<xsl:element name="td">
<xsl:if test="$codeSize=0">
<xsl:attribute name="style"><xsl:value-of select="$cov0style"/></xsl:attribute>
0%
</xsl:if>
<xsl:if test="$codeSize > 0">
<xsl:variable name="coverage" select="ceiling(100 * $coveredCodeSize div $codeSize)"/>
<xsl:if test="$coverage >= 0 and $coverage < 20"><xsl:attribute name="style"><xsl:value-of select="$cov20style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 20 and $coverage < 40"><xsl:attribute name="style"><xsl:value-of select="$cov40style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 40 and $coverage < 60"><xsl:attribute name="style"><xsl:value-of select="$cov60style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 60 and $coverage < 80"><xsl:attribute name="style"><xsl:value-of select="$cov80style"/></xsl:attribute></xsl:if>
<xsl:if test="$coverage >= 80"><xsl:attribute name="style"><xsl:value-of select="$cov100style"/></xsl:attribute></xsl:if>
<xsl:value-of select="$coverage"/>%
</xsl:if>
</xsl:element>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
私は、あなたが、これが役に立つことを願っ。また、このファイルについてのフィードバックを歓迎しているので、我々は正しいファイルをcommutiyを提供することができます。 この関連の質問を参照してくださいする
@pelazm - 。いくつかの優れた指導してくれてありがとう。
あなたのソリューションに追加するには2つのマイナーな事柄ます:
(a)は外部PartCover.settings.xmlにしたくない場合は、
<!-- Runs unit tests through PartCover to calculate unit test covereage-->
<!-- Use %2a instead of * and %3f instead of ? to prevent expansion -->
<!-- %40 = @ %25 = % %24 = $ -->
<Target Name="RunTests">
<ItemGroup>
<pc4_settings Include="--target "$(NUnitEXE)""/>
<pc4_settings Include="--target-work-dir "$(RootDirectory)\src""/>
<pc4_settings Include="--include [%2a]%2a"/>
<pc4_settings Include="--exclude [nunit%2a]%2a"/>
<pc4_settings Include="--exclude [log4net%2a]%2a"/>
<pc4_settings Include="--exclude [MetadataProcessor.Tests%2a]%2a"/>
</ItemGroup>
<CreateItem Include="$(RootDirectory)\src\**\bin\$(Configuration)\*.Tests.dll">
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<Exec Command=""$(PartCover4Directory)\PartCover.exe" --register @(pc4_settings,' ') --target-args "%(TestAssemblies.Identity) $(NUnitArgs) /xml:%(TestAssemblies.Identity).NUnitResults.xml" --output $(BuildDirectory)\PartCover-results.xml"
ContinueOnError="true"
WorkingDirectory="$(BuildDirectory)">
<Output TaskParameter="ExitCode" ItemName="ExitCodes"/>
</Exec>
<XslTransformation XslInputPath="$(RootDirectory)\tools\partcover4\xslt\PartCoverFullReport.xslt"
XmlInputPaths="$(BuildDirectory)\PartCover-results.xml"
OutputPaths="$(BuildDirectory)\PartCover-results-PartCoverFullReport.html" />
<Error Text="Test error occurred" Condition="'%(ExitCodes.Identity)'>0"/>
</Target>
(b)のガスパー・ナギーのHTMLレポートはかなり良いです - <のhref = "http://gasparnagy.blogspot.com/2010/09/detailed-report-for-partcover-in.html" のrel = "nofollowを" > http://gasparnagy.blogspot.com/2010/09/detailed-report-for-partcover-in.html の
私はPartCoverバージョン2.3.0.18745を使用するときに私のコードがレポートに表示されないで同様の問題がありました。バージョン2.2.0.34631を使用することで問題を解決します。