如何仅在CI构建中调试NUnit失败?

时间:2018-09-12 14:31:23

标签: jenkins nunit

我在Jenkins版本中使用NUnit运行测试时遇到麻烦。当我手动进行测试(通过Cake构建脚本)(即使直接在构建服务器上)成功完成所有测试时,在Jenkins中调用相同构建脚本的构建过程中运行这些测试时,测试就会失败。

作为输出,我得到以下消息:

  

执行任务“测试”时发生错误。   错误:       NUnit3:无法识别的错误(退出代码-1073740940)。

NUnit上运行TraceLevel = TraceLevel.Debug时,我得到一个跟踪文件,看起来不错,直到它在同一行之后才停止:

15:49:14.342 Debug [ 6] Dispatcher: Using Direct strategy for <my failing test>

我正在与NUnit和一个工作人员一起运行InProcess

总是相同的测试失败-但仅当在CI版本中运行时。 我知道几乎不可能从这里诊断出确切的问题-我要问的是,是否有任何方法可以获取有关确切失败原因的更多信息?

1 个答案:

答案 0 :(得分:1)

基于错误代码,这似乎是堆损坏错误(C0000374)。有关更多信息,请参见https://blogs.msdn.microsoft.com/calvin_hsia/2015/01/30/heap-corruption-exception-0xc0000374/,以获取有关如何产生此类错误的一些示例。

我的猜测是,您的测试在某些情况下做得不好并且可以避免使用它,但是在Jenkins下运行可能会改变环境,从而引发异常。

这很难诊断。我想确定的第一件事是您的任何测试代码是否都已执行。 NUnit内部跟踪似乎表明已调度(排队)了测试,但实际上并未将其出队并运行。但是,当跑步者撞车时,我们有时会丢失一些事件。

您可以尝试使用--workers = 0运行,以查看简化的执行代码(不使用队列)是否可以为您提供更多信息。