如何使用Jenkins安排C#单元测试?

11
在过去的6个月中,我们的测试团队一直在使用Selenium WebDriver测试我们基于Web的产品。 我们已经取得了很大的成功,并继续每天使用它。 我们使用Visual Studio编写C#单元测试,因为我们是一个.NET商店。 对于.NET,我们不使用任何其他测试框架。
我们一直在手动运行自动化测试,通过Visual Studio(2013)中的测试资源管理器窗口进行检查结果,然后将其记录到电子表格中。虽然这不是理想的,但我们没有那么多测试,因此到目前为止这对我们来说已经足够了。 然而,由于未来几个月将需要编写和维护的自动化测试数量将急剧增加,所以现状无法满足需求。
我最近一直在尝试创建批处理文件以调用vstest.console.exe及其各种命令,然后将这些日志添加到服务器中。 尽管不是理想情况,但我知道我仍然可以做更多工作,具体来说是集成某种CI服务器。
我们已经在使用Team Foundation Server,并且有各种虚拟服务器(所有服务器都运行Windows 8.1),因此我考虑利用这一点,于是开始研究Jenkins。 然而,问题在于,我没有发现关于Jenkins和C#的太多信息。 它似乎主要是针对Java设置的。 我是否遗漏了一些东西? 我找到的少量信息已经过时,并且对我没有用。
我已经设法将其设置并安装vstest.console.exe插件,但无法运行简单的测试。 如果有一个不早于2012年的最新的逐步指南就好了 :) 你们认为Jenkins是用于C#和.NET框架的正确选择吗? 是否有在C#社区中使用的“标准”? 我听说过巡航控制,我会去查看它。 它是一个可行的替代方案吗? 在.NET上更容易使用?
这里是我们需要的基本内容: 1. 继续在Visual Studio中编写测试并创建C#单元测试 2. 在远程/本地服务器上安排单元测试运行
  • 撰写结果/日志文件 - 失败/成功的良好报告功能会很棒
  • 将该文件发送电子邮件给QA / Dev团队
  • 我希望你们中一些人能够分享一些经验。


    4
    仅仅为了运行定期测试而使用CI似乎过于复杂。使用任务计划程序来调用批处理文件会更简单。还可以使用TFS本身或者Visual Studio测试运行器来运行测试,据我所知,它输出trx文件。但不确定将这些文件转换为可读的结果/日志文件有多容易。我很想看到对此问题的回答如何。 - John O.
    3
    TFS已经内置了这个功能。在所有这些功能之上添加Jenkins会增加大量额外的复杂性和冗余,却几乎没有什么好处。仔细研究一下TFS,它可以直接完成所有这些任务(特别是你正在使用内置的MSTest)。 - Arran
    1
    谢谢大家。我会更深入地研究TFS。 - Banjaxx
    1
    TFS不错,另一个(根据我们的构建专家更好的)选择是Teamcity - Nathan Cooper
    2个回答

    11
    可以使用Jenkins通过批处理脚本运行测试,通过NUnitMSTest插件向Jenkins报告。为此,只需从Jenkins执行的脚本中调用测试运行器(请参见下面的链接)。我们这里这样做的主要原因是Jenkins用于自动化构建过程,并且每次推广新代码时都会运行自动化测试。如果您不使用Jenkins进行构建自动化和报告,即只需进行调度,则最基本的解决方案将是任务计划程序(如John O所示)。此外,如果您使用的是MSTest而不是NUnit,则最好查看TFS,正如其他人建议的那样。
    如果您真的想使用Jenkins与MSTest一起使用,则以下链接可能从配置角度非常有用: 尝试在Jenkins上运行mstest时出错 - 2012
    以上链接中运行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插件无法启动mstest.exe - 2014

    如果你能/想使用NUnit,请查看以下内容:

    如何从Jenkins运行NUnit测试?

    使用Jenkins执行NUnit

    实际上,为了报告目的,记录到Excel或类似工具并不是一个糟糕的主意(特别是如果您的组织使用Sharepoint)。如果最坏的情况发生并且您无法让任何东西正常工作,那么一种解决方案是使用Excel的COM对象模型自动化此报告过程,直接将结果写入电子表格。

    然而,仍建议使用TFS。


    0

    我将为您提供有关如何从CI处理测试的信息,而不是如何配置Jenkins或其他CI服务器。这可能只是对您问题的部分回答,但至少是一些有用的信息。请记住,Selenium测试始终需要指向实时站点,并且在启动测试之前应该进行站点部署(手动或自动)。我更喜欢在晚上运行测试套件,并让其整夜运行。您可以使用NUnit控制台、批处理和Windows任务计划程序轻松实现这一点。请参阅我的答案here以了解如何操作。当然,这也可以从任何其他CI服务器中完成。使用NUnit命令开关,您还可以自动导出结果。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接