如何从PartCover结果.XML如何从PartCover结果的HTML报告的.xml
回答
据我所知,一个HTML报告,有像NCoverExplorer没有方便的工具,它可以改变一个PartCover结果.xml文件成.html报告,但有一些.xsl文件可用于将PartCover的结果转换为CruiseControl.NET中的.html:Using CruiseControl.NET with PartCover。
您可以从CruiseControl.NET获取这些.xsl文件,并使用类似Sandcastle的XslTransform.exe的方式转换您的PartCover结果。顺便说一下,如果这恰好与TeamCity相关,即将推出的5.0版本将包括使用PartCover或NCover支持.NET覆盖。请参阅documentation了解更多信息。否则忽略这一段;-)
哦,等等,我知道那个名字。你是TeamCity开发人员之一!在这种情况下,请忽略我最后一段。这是一个小世界毕竟:) – Cygon 2009-08-27 06:52:44
LoL兄弟,最后一段很有趣:) – 2010-04-21 15:46:16
也许是一个复杂的做法,但我用Simian XML报告做到了这一点。为格式创建了一个XSL文件,然后编写了一个愚蠢的小控制台应用程序;
private const string MissingExtension = "Please enter a valid {0} file, this is missing the extension.";
private const string InvalidExtension = "Please enter a valid {0} file, the file provided has an invalid extension.";
public static void Main(string[] args)
{
if (args.Length < 2)
{
System.Console.WriteLine("Please enter a xsl file and xml file full path.");
return;
}
var xslFile = args[0];
var xmlFile = args[1];
if (!CheckFileNameFormat(xslFile, false))
return;
if (!CheckFileNameFormat(xmlFile, true))
return;
var transform = new XslCompiledTransform();
// Load the XSL stylesheet.
transform.Load(xslFile);
// Transform xml file into an html using the xsl file provided.
transform.Transform(xmlFile, xmlFile.Replace("xml", "html"));
}
private static bool CheckFileNameFormat(string fileName, bool isXmlFile)
{
var extension = isXmlFile ? "xml" : "xsl";
// valida that the argument has a period
if (fileName.IndexOf(".") < 1)
{
System.Console.WriteLine(string.Format(MissingExtension, extension));
return false;
}
var filePieces = fileName.Split('.');
// split on the period and make sure the extension is valid
if (filePieces[filePieces.GetUpperBound(0)] != extension)
{
System.Console.WriteLine(string.Format(InvalidExtension, extension));
return false;
}
return true;
}
然后我可以从这样的MSBuild文件中调用它;
<Target Name="RunSimian" DependsOnTargets="RebuildSolution">
<Exec IgnoreExitCode="true" Command=""$(MSBuildProjectDirectory)\..\Build\Packages\Simian\simian-2.2.24.exe" -formatter=xml:$(MSBuildProjectDirectory)\..\Build\Artifacts\simian.xml -language=cs -excludes=$(MSBuildProjectDirectory)\..\Product\Production\**\*.Designer.cs $(MSBuildProjectDirectory)\Production\**\*.cs" >
</Exec>
<Exec IgnoreExitCode="true" Command=""$(MSBuildProjectDirectory)\..\Build\Packages\XmlToHtmlConverter.exe" $(MSBuildProjectDirectory)\..\Build\Packages\Simian\simian.xsl $(MSBuildProjectDirectory)\..\Build\Artifacts\simian.xml">
</Exec>
最简单的解决方案可能是使用msxsl,一个简单的命令行变压器。我将其用于此目的,并且很容易将其集成到您的构建系统中。
也许你应该详细说明PartCover结果.xml的含义。 如果您想从一般意义上的XML生成HTML报告,您可以使用XSLT来完成。 – futureelite7 2009-07-02 07:59:23