使用node.js运行mocha测试,使用console.log运行xunit

时间:2015-05-06 16:14:28

标签: xml node.js jenkins mocha xunit

我目前的mocha测试运行在与jenkins集成的node.js之上。问题是当我使用xunit来解析我的结果时,我的代码中有很多console.log语句(特别是用于显示有关网络连接错误,用户身份验证等的更多信息)。这个问题是当我使用带有mocha的xml报告器时,console.log中的语句会显示并破坏最终xml结果集的解析。

当我在我的测试中使用我的console.log语句时,是否有智能方法在CLI上手动运行它们与通过Jenkins执行它们并且需要xunit期望解析的干净XML?

3 个答案:

答案 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将保持不变。