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

问题描述 投票:0回答:1

我在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构建中运行时才会失败。我知道从这里诊断出确切的问题几乎是不可能的 - 我要问的是,是否有任何方法可以获得有关究竟失败的更多信息?

jenkins nunit
1个回答
1
投票

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

我的猜测是你的测试做的很糟糕,并且在大多数情况下侥幸逃脱,但在Jenkins下运行可能会改变环境,以至于它会抛出异常。

这很难诊断。我想要确定的第一件事是你的测试代码是否完全执行。 NUnit内部跟踪似乎表示测试已分派(入队)但实际上没有出列并运行。但是,当跑步者崩溃时,我们有时会失去一些事件。

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

© www.soinside.com 2019 - 2024. All rights reserved.