0

我可能在这里遗漏了一些明显的东西,但是我的 mvc Web 应用程序已使用 localhost 在我的开发机器上使用 specflow UI 测试成功测试,但我无法让它在 VSTS 中的 CI 构建管道上工作?

这是我的设置,1 x Asp.Net 解决方案包括:

  • 1 个 WebCalculator(简单地将 2 个数字相加的 MVC 应用程序)
  • 1 个 UI Specflow 测试项目

在我的开发机器上:我可以在 Visual Studio 中使用 NUnit3TestAdapter 运行单元测试,我的网站运行在 localhost:58909

在 VSTS 上:在构建任务之后,Visual Studio 测试任务正在拾取 NUnit 适配器并尝试运行测试(使用 InternetExplorerDriver 服务器)但无法找到我的网站在 localhost 上运行它似乎:

这是输出:

2017-04-03T09:02:31 Starting test execution, please wait...
2017-04-03T09:02:32 Information: NUnit Adapter 3.7.0.0: Test execution started
2017-04-03T09 Information: Running all tests in C:\a\1\s\WebCalculator.UiTestsNUnitRunner\bin\Release\WebCalculator.UiTestsNUnitRunner.dll
2017-04-03T09:02:32 Information: NUnit3TestExecutor converted 3 of 3 NUnit test cases
2017-04-03T09:02:33  Started InternetExplorerDriver server (32-bit)
2017-04-03T09:02:33  3.0.0.0
2017-04-03T09:02:33  Listening on port 1065
2017-04-03T09:02:33  Only local connections are allowed
2017-04-03T09:03:54  Started InternetExplorerDriver server (32-bit)
2017-04-03T09:03:54  3.0.0.0
2017-04-03T09:03:54  Listening on port 1123
2017-04-03T09:03:54  Only local connections are allowed
2017-04-03T09:03:54  Failed   AddTwoNumbers("50","70","120",System.String[])
2017-04-03T09:03:54  ##[error]Error Message:
2017-04-03T09:03:54  ##[error]   OpenQA.Selenium.WebDriverTimeoutException : Timed out after 10 seconds
2017-04-03T09:03:54  ##[error]  ----> OpenQA.Selenium.NoSuchElementException : Unable to find element with id == summandOne

所以我的问题是,Visual Studio 测试任务是否足够聪明,可以针对我的网站进行测试,该网站是 localhost:58909 解决方案的一部分?

来自 MS 的示例:https ://www.visualstudio.com/en-us/docs/test/continuous-testing/getting-started/continuous-test-selenium

Specflow 测试是否指向 XXX.azurewebsites.net 网址,所以我开始认为一起构建网站和执行 UI 测试(就像我正在尝试的那样)不是正确的方法?

当您想对网站运行 Specflow 测试时,是否需要先构建并将其发布到托管环境?

4

1 回答 1

1

根据源和测试路径 (c:\a\1\s...),我假设您正在使用Hosted Agent并在build agent上进行测试。你不能这样做。

首先,托管代理作为服务运行,它无法运行交互式测试(selenium UI 测试)。

其次,本地主机意味着测试机器网站机器同一台机器上。显然,您的网站没有在托管代理中运行。

关于您提到的文章,该网站位于 azure (baseURL="<a href="https://partsumlimited.azurewebsite..." rel="nofollow noreferrer">https://partsumlimited.azurewebsite.... ),所以它可以从互联网访问

您可以参考以下步骤来实现您的要求:

  1. 设置一个以交互模式运行的本地构建代理(如果它作为服务模式运行,您需要在远程机器上进行测试,请参阅该文章部署代理,复制文件并运行测试)在 Windows 上部署代理
  2. 创建一个新的构建定义以使用该构建代理
  3. 添加IIS Web 应用部署步骤或其他步骤以将您的 Web 应用部署到 IIS(使用 WinRM 将您的 Web 部署包部署到 IIS 服务器
  4. 在测试代​​码中更改您的网站 URL(如果构建代理在同一台机器上运行,您可以使用 localhost)

注意:如果你想在远程机器上运行测试,远程机器需要可以从构建代理访问。

于 2017-04-04T02:03:46.673 回答