我有一个 ASP.NET MVC 5 Web 项目,还有一个基于 MsTest 的单元测试项目,该项目使用 Selenium 进行一些自动化“浏览器”测试。
目前,我必须运行 Web 项目(在本地 IIS Express 中),然后针对该项目运行测试,但这有各种限制。例如,我只能“运行”测试,而不能“调试”它们。显然,这不适合我的持续集成管道。
是否没有办法让测试启动网站的实例? (我知道 ASP.NET MVC 6 可以自托管,因此这可能会带来一些可能性,但这个项目将停留在 MVC 5 上)。
最佳答案
好的,这是一种方法:
使用 the
[AssemblyInitialize]
attribute 修饰的方法启动 Web 服务器(此方法必须位于测试项目中用[TestClass]
属性修饰的类中)。[AssemblyInitialize] public Initialize() { ... }
在用
[AssemblyCleanup]
属性修饰的方法中停止 Web 服务器。[AssemblyCleanup] public Cleanup() { ... }
要启动 IIS Express,您只需在 IISExpress.exe 上使用 Process.Start
,传入 path
和 port
参数即可。 (要停止它,您只需终止您启动的进程即可)。有关示例,请参阅 Fran 的答案中的链接。
path
参数应指向包含您的网站项目的文件夹(项目文件夹,而不是 bin
文件夹)。
port
参数需要与您在本地运行网站时使用的本地端口号相同(因此,如果浏览器窗口中的 URL 为 http://localhost:57941,则您需要的端口号为 57941) .
关于asp.net-mvc - 我可以使用同一解决方案中单元测试项目中的 Selenium 来测试 ASP.NET MVC Web 项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691016/