使用 node.js 运行 mocha 测试,并使用控制台.log运行 xunit break



我目前有我的摩卡测试运行在node.js与jenkins集成。问题是当我使用 xunit 来解析我的结果时,我的代码中有很多控制台.log语句(特别是用于显示有关网络连接错误、用户身份验证等的更多信息)。这样做的问题是,当我将 xml 报告器与 mocha 一起使用时,控制台.log中的语句会显示并中断最终 xml 结果集的解析。

目前是否有一种聪明的方法可以在我的测试中让我的控制台.log语句在 CLI 上手动运行它们时,或者当它们通过 Jenkins 执行并需要 xunit 期望解析的干净 XML 时?

当我使用 Jenkins时,我设置了我的代码,以便通过检查JENKINS_HOME环境变量来使其无论是否在 Jenkins 中运行,它都会以不同的方式工作。(在 Jenkins 设置的所有变量中,这个变量似乎最独特,不太可能被其他东西意外设置。如果设置了此变量,我的代码将假定它在 Jenkins 中运行并采取相应的行动。

例如,这会将log设置为等效于 Jenkins 外部的console.log,并且在 Jenkins 中不执行任何操作的函数:

var jenkins = (process.env.JENKINS_HOME !== undefined);
var log = !jenkins ? console.log : function () {};

您可以使用process.stdout.isTTY检查您是否在交互式终端中运行。如果它不是 tty,您可以将console.log设置为空函数。

您可以编写调试语句和控制台所需的所有其他信息,而不是写入控制台.log错误。Jenkins 控制台输出将显示此信息,类似于显示控制台日志中的信息,并且生成的 xml 将保持不变。

最新更新