以编程方式收集NUnit结果

时间:2010-06-11 18:34:38

标签: nunit nunit-console

当我的每晚构建完成时,我会自动运行一些NUnit测试。我有一个控制台应用程序,它检测新的构建,然后将构建的MSI复制到本地文件夹,并将我的所有组件部署到测试服务器。之后,我在NUnit dll中进行了一系列测试,我通过使用Process / ProcessStartInfo执行“nunit-console.exe”来运行。我的问题是,如何以编程方式获取Total Success / Failed测试的数字?

4 个答案:

答案 0 :(得分:3)

您是否考虑使用CruiseControl.NET等连续集成服务器?

它为您构建并运行测试,并在网页中显示结果。如果你只是想要一个工具,让nunit-console.exe以XML格式输出结果,并使用XSLT脚本解析/转换它,就像来自巡航控制的脚本一样。

Here is an example of such an XSL file如果您在nunit-console.exe的直接输出上运行转换,则必须调整select语句并删除cruisecontrol。

然而,听起来您可能对持续集成感兴趣。

答案 1 :(得分:1)

我们有类似的要求,我们所做的是读入由NUnit生成的测试结果XML文件。

XmlDocument testresultxmldoc = new XmlDocument();
testresultxmldoc.Load(this.nunitresultxmlfile);

XmlNode mainresultnode = testresultxmldoc.SelectSingleNode("test-results");
this.MachineName = mainresultnode.SelectSingleNode("environment").Attributes["machine-name"].Value;
int ignoredtests = Convert.ToInt16(mainresultnode.Attributes["ignored"].Value);
int errors = Convert.ToInt16(mainresultnode.Attributes["errors"].Value);
int failures = Convert.ToInt16(mainresultnode.Attributes["failures"].Value);
int totaltests = Convert.ToInt16(mainresultnode.Attributes["total"].Value);
int invalidtests = Convert.ToInt16(mainresultnode.Attributes["invalid"].Value);
int inconclusivetests = Convert.ToInt16(mainresultnode.Attributes["inconclusive"].Value);

答案 2 :(得分:0)

我们最近有类似的要求,并编写了一个小型开源库,将结果文件合并到一组聚合结果中(好像您已经通过一次运行nunit-console运行所有测试)。

您可以在https://github.com/15below/NUnitMerger

找到它

答案 3 :(得分:0)

我引用release notes for nunit 2.4.3

  

控制台运行程序现在在尝试运行测试时遇到否定返回代码。测试中的失败或错误本身会给出正回报代码,等于此类失败次数或错误。

(强调我的)。这里的含义是,正如bash中通常的那样,返回0表示成功,非零表示失败或错误(如上所述)。

HTH