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

时间:2014-12-09 17:39:28

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

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

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

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

我已经设置并安装了vstest.console.exe插件,但无法进行简单的测试。一个不在2012年之前的当前分步指南会很棒:) 你们认为Jenkins是采用c#和.net框架的方法吗?在c#社区中是否使用了“标准”?我听说过巡航控制,我要检查一下。这是一个可行的选择吗?更容易使用.net?

这基本上是我们需要的:

  1. 继续在visual studio中编写测试并创建c#单元测试
  2. 在远程/本地服务器上安排一系列单元测试
  3. 写出结果/日志文件 - 在失败/通过时很好的报告功能会很棒
  4. 将该文件通过电子邮件发送给qa / dev团队
  5. 我希望你们中的一些人曾经走过这条路,可以分享一些见解

2 个答案:

答案 0 :(得分:6)

可以使用Jenkins通过批处理脚本运行测试,通过NUnitMSTest插件向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是你最好的选择。

答案 1 :(得分:0)

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