我有一个ASP.NET MVC 5 Web项目,并且我有一个基于MsTest的单元测试项目,该项目使用Selenium进行一些自动化的“浏览器”测试。
当前,我必须运行Web项目(在本地IIS Express中),然后针对该项目运行测试,但这有各种限制。例如,我只能“运行”测试,而不能“调试”它们。显然,这与我的持续集成流程并不合适。
没有办法让测试启动网站实例吗?(我知道ASP.NET MVC 6可以是自托管的,因此可能会打开一些可能性,但是该项目将停留在MVC 5上)。
好的,这是一种方法:
[AssemblyInitialize]
[TestClass]
[AssemblyInitialize] public Initialize() { ... }
[AssemblyCleanup]
[AssemblyCleanup] public Cleanup() { ... }
要启动IIS Express,您可以仅Process.Start在IISExpress.exe上使用,并传入path和port参数。(要停止它,您可以简单地终止您开始的进程)。有关示例,请参见Fran的答案中的链接。
Process.Start
path
port
该path参数应指向包含您的网站项目的文件夹(项目文件夹,而不是bin文件夹)。
bin
该port参数必须是当你在本地运行的网站上使用相同的本地端口号(所以如果在浏览器窗口中的网址是HTTP://本地主机:57941,那么你需要的端口号为57941)。