当我的每晚构建完成时,我会自动运行一些NUnit测试。我有一个控制台应用程序,它检测新的构建,然后将构建的MSI复制到本地文件夹,并将我的所有组件部署到测试服务器。之后,我在NUnit dll中进行了一系列测试,我通过使用Process / ProcessStartInfo执行“nunit-console.exe”来运行。我的问题是,如何以编程方式获取Total Success / Failed测试的数字?
答案 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运行所有测试)。
找到它答案 3 :(得分:0)
我引用release notes for nunit 2.4.3:
控制台运行程序现在在尝试运行测试时遇到否定返回代码。测试中的失败或错误本身会给出正回报代码,等于此类失败次数或错误。
(强调我的)。这里的含义是,正如bash中通常的那样,返回0表示成功,非零表示失败或错误(如上所述)。
HTH