【问题标题】:Unit tests failing in JenkinsJenkins 中的单元测试失败
【发布时间】:2017-03-20 09:44:44
【问题描述】:

我们在 C# 解决方案中有 10K+ 单元测试,这些测试在本地和 TFS 中运行时都通过了。

现在,我们正在为我们的解决方案堆栈设置 Jenkins,但我们面临着大约 250 个单元持续失败的问题。

当我尝试使用 Visual Studio 和 Commnad 提示符 (MSTest) 在 jenkins 设置服务器中运行它们时,通过了相同的单元测试。

您认为问题是什么?任何有关此问题的线索都会有所帮助。

编辑 1:

我进行了研究,但找不到任何东西,因为问题本身很奇怪。如果您不清楚,请提出问题而不是投反对票。

编辑 2:

我能够找出问题所在。它与 unittests dll 配置文件一起使用。当我通过删除配置文件在服务器中执行 MSTest 时,我看到同一组测试失败,而 Jenkins 设置失败。

我想我们需要修改 Jenkins 门户中配置的步骤以加载 unittests dll 配置文件。

【问题讨论】:

    标签: c# unit-testing jenkins


    【解决方案1】:

    我的猜测是您的测试实际上不是单元测试,而是集成测试或更糟,并且它们不确定地失败。除此之外,您是在要求人们在没有发布源代码的情况下在这里做不可能的事情。

    要么发布来源,要么聘请了解 Jenkins IMO 的顾问。

    【讨论】:

    • 感谢您的回答。我确信这些是单元测试,我需要看看它们为什么会失败。
    【解决方案2】:

    条件编译符号可能存在​​问题(例如 DEBUGRELEASE 代码):在 VS 中,您通常在 DEBUG 版本上运行测试,在发布版本上在 CI 服务器上运行。

    还要查看一些未正确清理的全局状态。某些在测试看似完成后可能仍在运行的线程可能会破坏以后的测试,即使这些后来的测试位于不同的测试 dll 中也是如此。如果测试失败取决于测试运行的顺序,有时可以检测到这一点。

    另一个经常面临的问题是依赖于文件中的测试数据:这些文件可能在实际运行测试的虚拟化环境中丢失。使用Deployment 属性。

    【讨论】:

      【解决方案3】:

      NCrunch 也有类似的问题。也许您可以签入 VS 您的“构建”标签平台目标。它应该和 Jenkins 的配置一样。例如“Platform target”是x64,在Jenkins中也应该使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-12
        • 2011-09-16
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-23
        相关资源
        最近更新 更多