我的团队正在为我们的某个网站构建一个SpecFlow测试回归套件,并让测试在本地运行。我们一直在尝试让构建服务器(TFS 2013构建服务器)在我们签入代码时能够运行这些测试。我们无法让它发挥作用。
在本地,我们在NUnit框架上运行我们的测试,我们认为它在构建服务器上的工作方式相同。似乎构建服务器只想在VS Test Runner上运行测试,因为每次都无法运行我们的SpecFlow测试。
如果我远程登录构建服务器并在VS中针对SpecRun运行SpecFlow测试,则测试工作并通过。我们一直在玩构建定义,但没有任何运气。在签入代码时需要设置什么才能使其运行?
以下是我们的SpecFlow测试项目的模式匹配:
这是我们的构建输出的图像,因为VS Test Runner正在尝试执行我们的一个SpecFlow测试:
更新:我们已经在构建服务器上运行了测试。但是,我们实际上试图访问我们网站的测试会产生以下错误:
测试方法 AccessTheNDCHomePage抛出异常: OpenQA.Selenium.WebDriverException:对URL http://localhost:7055/hub/session/ae10bda6-c46c-4c35-bd9f-f2f9400767ef/url的远程WebDriver服务器的HTTP请求在60秒后超时。 ---> System.Net.WebException:操作已超时 在System.Net.HttpWebRequest.GetResponse() 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
在网上浏览后,似乎可能是因为Firefox更新到版本38和/或最近的Selenium / WebDriver更新。有没有人有关于解决这个问题的任何信息或提示?
答案 0 :(得分:1)
首先,您需要了解SpecFlow是什么。它基本上是一个单元测试生成工具。它以config中定义的语言生成单元测试。
如果您在解决方案中编写了简单的NUnit测试,您需要做些什么才能让它们在TFS上运行?你必须在构建服务器上有一个NUnit运行器,并配置TFS来使用它。对SpecFlow测试也没有什么不同。
那么解决方案呢?在本地生成MSTest格式的测试,然后在TFS中检查这些测试时将运行它们。如果您不想这样做,请set TFS up to be able to run NUnit flavour tests。
修改
听起来好像当你说“未能运行”specflow测试时,这些并没有失败,而是找不到。您可能需要调整包含specflow测试的程序集的名称,以便tfs中的当前模式查找测试程序集,或添加过滤器以允许TFS查找新程序集。
答案 1 :(得分:1)
如果您已经能够使用相同的解决方案构建并运行其他nUnit测试,那么您只会遇到模式匹配问题。
构建指定了一个程序集名称模式以进行查找测试。如果您将其更改为包含" spec "那么你的测试就会运行。
在XAML构建中它位于构建定义编辑器的“进程”选项卡上。在新的构建系统中,您可以选择" VS Test"任务并编辑它。
答案 2 :(得分:0)
以下是我们在构建服务器上设置SpecFlow的一些问题和解决方案:
构建服务器并不总能识别我们的SpecFlow测试项目 - 将SpecFlow测试的平台目标设置为x86似乎解决了这个问题
WebDriver在60秒后出现超时错误 - 我仍在本地获取此信息,当我们尝试通过构建服务器上的浏览器运行测试时,它仍然会发生。我们能够通过构建服务器对我们的Selenium Grid以及SauceLabs运行我们的测试。如果我找到解决方法,我会更新我的答案。
答案 3 :(得分:0)
我过去遇到过同样的问题,答案是确保您的构建代理配置为运行交互式。
必须将构建代理配置为运行交互式,以便针对浏览器运行selenium /编码的UI测试。
https://msdn.microsoft.com/en-us/library/ms181712.aspx#interactive