我在Jenkins构建中使用NUnit
运行测试时遇到问题。当我手动运行测试(通过Cake
构建脚本) - 甚至直接在构建服务器上 - 测试都成功时,它们在Jenkins构建期间运行时会失败,调用相同的构建脚本。
作为输出,我收到以下消息:
执行任务'Test'时发生错误。错误:NUnit3:无法识别的错误(退出代码-1073740940)。
当用NUnit
运行TraceLevel = TraceLevel.Debug
时,我得到一个看起来很好的跟踪文件,直到它在同一行之后停止:
15:49:14.342 Debug [ 6] Dispatcher: Using Direct strategy for <my failing test>
我和NUnit
以及一名工人一起经营InProcess
。
它始终是相同的测试失败 - 但只有在CI构建中运行时才会失败。我知道从这里诊断出确切的问题几乎是不可能的 - 我要问的是,是否有任何方法可以获得有关究竟失败的更多信息?
根据错误代码,这似乎是堆损坏错误(C0000374)。有关更多信息,请参阅https://blogs.msdn.microsoft.com/calvin_hsia/2015/01/30/heap-corruption-exception-0xc0000374/,了解如何生成此类错误的一些示例。
我的猜测是你的测试做的很糟糕,并且在大多数情况下侥幸逃脱,但在Jenkins下运行可能会改变环境,以至于它会抛出异常。
这很难诊断。我想要确定的第一件事是你的测试代码是否完全执行。 NUnit内部跟踪似乎表示测试已分派(入队)但实际上没有出列并运行。但是,当跑步者崩溃时,我们有时会失去一些事件。
您可以尝试使用--workers = 0运行,以查看简化的执行代码(没有使用队列)是否可以获得更多信息。