我有一个ASP.NET MVC 5 Web项目,我有一个基于MsTest的单元测试项目,它使用Selenium进行一些自动“浏览器”测试。
目前,我必须运行Web项目(在我的本地IIS Express中),然后针对该项目运行测试,但这有各种限制。例如,我只能“运行”测试,我无法“调试”它们。显然,这对我的持续集成管道并不适用。
没有办法让测试启动网站的实例吗? (我知道ASP.NET MVC 6可以自托管,因此可能会开辟一些可能性,但这个项目将停留在MVC 5上。)
答案 0 :(得分:0)
我不确定你是如何用Selenium做到这一点的。 Selenium只是自动化浏览器进程。您可以编写脚本,也可以在测试运行之前使用SpecFlow等测试框架启动Web服务器。
答案 1 :(得分:0)
好的,这是一种方法:
在装有the [AssemblyInitialize]
attribute的方法中启动Web服务器(此方法必须位于使用[TestClass]
属性修饰的测试项目中的类中。)
[AssemblyInitialize]
public Initialize()
{
...
}
在使用[AssemblyCleanup]
属性修饰的方法中停止Web服务器。
[AssemblyCleanup]
public Cleanup()
{
...
}
要启动IIS Express,您可以在IISExpress.exe上使用Process.Start
,传入path
和port
参数。 (要停止它,你可以简单地杀死你开始的过程)。请参阅弗兰克斯答案中的链接以获取示例。
path
参数应指向包含您的网站项目的文件夹(项目文件夹,而不是bin
文件夹)。
port
参数需要与本地运行网站时使用的本地端口号相同(因此,如果浏览器窗口中的URL为http://localhost:57941,则您需要的端口号为57941)。