我可以在同一解决方案中使用单元测试项目中的Selenium测试ASP.NET MVC Web项目吗?

时间:2015-11-13 10:49:54

标签: asp.net-mvc visual-studio unit-testing selenium mstest

我有一个ASP.NET MVC 5 Web项目,我有一个基于MsTest的单元测试项目,它使用Selenium进行一些自动“浏览器”测试。

目前,我必须运行Web项目(在我的本地IIS Express中),然后针对该项目运行测试,但这有各种限制。例如,我只能“运行”测试,我无法“调试”它们。显然,这对我的持续集成管道并不适用。

没有办法让测试启动网站的实例吗? (我知道ASP.NET MVC 6可以自托管,因此可能会开辟一些可能性,但这个项目将停留在MVC 5上。)

2 个答案:

答案 0 :(得分:0)

我不确定你是如何用Selenium做到这一点的。 Selenium只是自动化浏览器进程。您可以编写脚本,也可以在测试运行之前使用SpecFlow等测试框架启动Web服务器。

http://www.radicalgeek.co.uk/Post/12/starting-up-iis-express-for-a-specflow-and-selenium-webdriver-test-run

如果第一个不起作用,则归档链接: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

答案 1 :(得分:0)

好的,这是一种方法:

  1. 在装有the [AssemblyInitialize] attribute的方法中启动Web服务器(此方法必须位于使用[TestClass]属性修饰的测试项目中的类中。)

    [AssemblyInitialize]
    public Initialize()
    {
        ...
    }
    
  2. 在使用[AssemblyCleanup]属性修饰的方法中停止Web服务器。

    [AssemblyCleanup]
    public Cleanup()
    {
        ...
    }
    
  3. 要启动IIS Express,您可以在IISExpress.exe上使用Process.Start,传入pathport参数。 (要停止它,你可以简单地杀死你开始的过程)。请参阅弗兰克斯答案中的链接以获取示例。

    path参数应指向包含您的网站项目的文件夹(项目文件夹,而不是bin文件夹)。

    port参数需要与本地运行网站时使用的本地端口号相同(因此,如果浏览器窗口中的URL为http://localhost:57941,则您需要的端口号为57941)。