我目前的mocha测试运行在与jenkins集成的node.js之上。问题是当我使用xunit来解析我的结果时,我的代码中有很多console.log语句(特别是用于显示有关网络连接错误,用户身份验证等的更多信息)。这个问题是当我使用带有mocha的xml报告器时,console.log中的语句会显示并破坏最终xml结果集的解析。
当我在我的测试中使用我的console.log语句时,是否有智能方法在CLI上手动运行它们与通过Jenkins执行它们并且需要xunit期望解析的干净XML?
答案 0 :(得分:1)
当我使用Jenkins时,我设置了我的代码,以便通过检查JENKINS_HOME
环境变量,无论是否在Jenkins中运行它都会有所不同。 (在Jenkins设置的所有变量中,这个变量看起来最独特,不太可能被其他东西意外设置。)如果设置了这个变量,我的代码会认为它在Jenkins中运行并相应地采取行动。
例如,这会将log
设置为相当于Jenkins之外的console.log
,并且是一个在Jenkins中无效的函数:
var jenkins = (process.env.JENKINS_HOME !== undefined);
var log = !jenkins ? console.log : function () {};
答案 1 :(得分:0)
您可以使用process.stdout.isTTY
检查您是否在交互式终端中运行。如果它不是tty,您可以将console.log
设置为空函数。
答案 2 :(得分:0)
您可以编写调试语句以及console.error所需的所有其他信息,而不是写入console.log。 Jenkins控制台输出将显示此信息,类似于它如何从控制台日志显示信息,并且生成的xml将保持不变。