【问题标题】:How to schedule C# unit tests with Jenkins?如何使用 Jenkins 安排 C# 单元测试?
【发布时间】:2023-03-11 07:41:01
【问题描述】:

在过去 6 个月中,我们的测试团队一直在使用 selenium webdriver 来测试我们基于 Web 的产品。我们已经取得了巨大的成功,并继续每天使用它。我们使用 Visual Studio,因为我们是一个 .net 商店来编写我们的 c# 单元测试。我们不为 .net 使用任何其他测试框架。 直到最近,我们一直通过 Visual Studio (2013) 中的测试资源管理器窗口手动运行自动化测试,检查结果,然后将它们记录到电子表格中。我知道这并不理想,但我们没有那么多测试,所以到目前为止这很适合我们。然而,我们需要编写和维护的自动化测试的数量将在未来几个月内迅速增加。

我最近一直在尝试创建用于调用 vstest.console.exe 及其各种命令的批处理文件,然后将这些日志添加到服务器。不理想。我知道我仍然可以做更多,特别是集成某种 CI 服务器。

我们已经在使用团队基础服务器,并且有各种虚拟服务器(所有运行 Windows 8.1)可供我们使用,所以我考虑利用这一点,所以我开始研究 Jenkins。麻烦的是,我没有找到很多关于 Jenkins 和 c# 的信息。它看起来主要适用于 java 设置。我错过了什么吗?我发现的少量信息严重过时,对我不起作用。

我已经设置并安装了 vstest.console.exe 插件,但无法运行简单的测试。不早于 2012 年的当前分步指南会很棒:) 你们认为 Jenkins 是 c# 和 .net 框架的最佳选择吗? c# 社区中是否使用了“标准”?我听说过巡航控制,我要去看看。它是一个可行的替代方案吗?与 .net 一起使用更容易吗?

这基本上是我们需要的:

  1. 继续在 Visual Studio 中编写测试并创建 C# 单元测试
  2. 安排在远程/本地服务器上运行我们的单元测试
  3. 写出结果/日志文件 - 关于失败/通过的漂亮报告功能会很棒
  4. 将上述文件通过电子邮件发送给 QA/开发团队

我希望你们中的一些人曾经走过这条路,可以分享一些见解

【问题讨论】:

  • 使用 CI 只运行计划的测试似乎有点矫枉过正。使用任务计划程序调用批处理文件会更简单。还有 TFS 本身。此外,Visual Studio 测试运行程序 AFAIK 会输出 trx 文件。不确定将其中一个转换为可读的结果/日志文件有多容易。我很想知道这个问题的答案如何。
  • TFS 已经内置了这个功能。在所有这些之上添加 Jenkins 会增加大量额外的复杂性和重复,而几乎没有收益。正确查看 TFS,它可以开箱即用地完成所有这些工作(尤其是当您使用内置的 MSTest 时)。
  • 谢谢大家。将更深入地研究 TFS
  • TFS 很好,另一个(更好,根据我们的构建人员)选项是 Teamcity。

标签: c# unit-testing selenium jenkins selenium-webdriver


【解决方案1】:

可以使用 Jenkins 通过批处理脚本运行测试,通过 NUnit 或 MSTest 插件向 Jenkins 报告。为此,只需从 Jenkins 执行的脚本中调用测试运行程序(参见下面的链接)。在我的商店中这样做的主要原因是 Jenkins 用于自动化构建过程,并且每次推广新代码时都会运行自动化测试。如果您不使用 Jenkins 进行构建自动化和报告 - 即您只想要调度 - 最基本的解决方案将是任务调度程序(如 John O 所示)。另外,如果您使用的是 MSTest 而不是 NUnit,那么正如其他人所建议的那样,最好看看 TFS。

如果您真的想将 Jenkins 与 MSTest 一起使用,从配置的角度来看,以下链接可能会很有用:

Error trying to run mstest on jenkins - 2012

从上述链接从 Jenkins 运行 MSTest 的示例:

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" /testcontainer:Example.Tests\bin\Debug\Example.Tests.dll /resultsfile:TestResults.trx

Jenkins MSTestRunner plugin is unable to launch mstest.exe - 2014

如果您可以/想要使用 NUnit,请查看以下内容:

How do you run NUnit tests from Jenkins?

Execute NUnit with Jenkins

实际上,出于报告目的,记录到 Excel 或类似的东西并不是一个可怕的想法(特别是如果您的组织使用 Sharepoint)。最坏的情况是最坏的情况,您无法进行任何工作,那么一种解决方案是通过使用 Excel 的 COM 对象模型将结果直接写入电子表格来自动执行此报告过程。

但仍然建议 TFS 是您的最佳选择。

【讨论】:

    【解决方案2】:

    我将向您提供一些关于如何从 CI 处理测试的信息,而不是如何配置 Jenkins 或其他 CI 服务器。这可能是您问题的部分答案,但至少是一些问题。请记住,硒测试总是需要一个实时站点来指向,并且在您开始测试站点部署之前应该发生(手动或自动)。我更喜欢在晚上运行一次测试套件,然后让它运行一整夜。您可以在NUnit 控制台、批处理和 Windows 任务调度程序的帮助下轻松完成此操作。请参阅我的回答here 如何做到这一点。果然,这可以从任何其他 CI 服务器完成。使用NUnit Command switch,您也可以自动导出结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-04
      • 2011-08-27
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多