我可以在同一解决方案的单元测试项目中使用 Selenium 测试 ASP.NET MVC web 项目吗?
Can I test an ASP.NET MVC web project using Selenium from a unit test project in the same solution?
我有一个 ASP.NET MVC 5 网络项目,我有一个基于 MsTest 的单元测试项目,该项目使用 Selenium 进行一些自动化 "browser" 测试。
目前,我必须 运行 Web 项目(在我本地的 IIS Express 中),然后 运行 针对它的测试,但这有各种限制。例如,我只能 "run" 测试,不能 "debug" 它们。很明显,这对我的持续集成管道来说效果不佳。
有没有办法让测试启动网站实例? (我知道 ASP.NET MVC 6 可以自托管,所以这可能会打开一些可能性,但这个项目将停留在 MVC 5 上。
我不确定您如何仅使用 Selenium 来完成此操作。 Selenium 只是自动化浏览器进程。您也许可以编写脚本,或者可以使用像 SpecFlow 这样的测试框架在测试前启动网络服务器 运行.
存档 link 以防第一个不起作用:https://web.archive.org/web/20160927003518/http://www.radicalgeek.co.uk/Post/12/starting-up-iis-express-for-a-specflow-and-selenium-webdriver-test-run
好的,这是一种方法:
在用 the [AssemblyInitialize]
attribute 修饰的方法中启动 Web 服务器(此方法必须在用 [TestClass]
属性修饰的测试项目中的 class 中).
[AssemblyInitialize]
public Initialize()
{
...
}
在用 [AssemblyCleanup]
属性修饰的方法中停止 Web 服务器。
[AssemblyCleanup]
public Cleanup()
{
...
}
要启动 IIS Express,您只需在 IISExpress.exe 上使用 Process.Start
,并传入 path
和 port
参数。 (要停止它,您可以简单地终止您启动的进程)。有关示例,请参见 Fran 的回答中的 link。
path
参数应指向包含您的网站项目的文件夹(项目文件夹,而不是 bin
文件夹)。
port
参数需要与您在本地 运行 网站时使用的本地端口号相同(因此如果浏览器 window 中的 URL 是 http://localhost:57941那么你需要的端口号是57941).
我有一个 ASP.NET MVC 5 网络项目,我有一个基于 MsTest 的单元测试项目,该项目使用 Selenium 进行一些自动化 "browser" 测试。
目前,我必须 运行 Web 项目(在我本地的 IIS Express 中),然后 运行 针对它的测试,但这有各种限制。例如,我只能 "run" 测试,不能 "debug" 它们。很明显,这对我的持续集成管道来说效果不佳。
有没有办法让测试启动网站实例? (我知道 ASP.NET MVC 6 可以自托管,所以这可能会打开一些可能性,但这个项目将停留在 MVC 5 上。
我不确定您如何仅使用 Selenium 来完成此操作。 Selenium 只是自动化浏览器进程。您也许可以编写脚本,或者可以使用像 SpecFlow 这样的测试框架在测试前启动网络服务器 运行.
存档 link 以防第一个不起作用:https://web.archive.org/web/20160927003518/http://www.radicalgeek.co.uk/Post/12/starting-up-iis-express-for-a-specflow-and-selenium-webdriver-test-run
好的,这是一种方法:
在用 the
[AssemblyInitialize]
attribute 修饰的方法中启动 Web 服务器(此方法必须在用[TestClass]
属性修饰的测试项目中的 class 中).[AssemblyInitialize] public Initialize() { ... }
在用
[AssemblyCleanup]
属性修饰的方法中停止 Web 服务器。[AssemblyCleanup] public Cleanup() { ... }
要启动 IIS Express,您只需在 IISExpress.exe 上使用 Process.Start
,并传入 path
和 port
参数。 (要停止它,您可以简单地终止您启动的进程)。有关示例,请参见 Fran 的回答中的 link。
path
参数应指向包含您的网站项目的文件夹(项目文件夹,而不是 bin
文件夹)。
port
参数需要与您在本地 运行 网站时使用的本地端口号相同(因此如果浏览器 window 中的 URL 是 http://localhost:57941那么你需要的端口号是57941).