一尘不染

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

selenium

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

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

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


阅读 245

收藏
2020-06-26

共1个答案

一尘不染

好的,这是一种方法:

  1. 旋转了一个网络服务器中饰有方法[AssemblyInitialize]属性(此方法必须是在一个类中装饰着你的测试项目[TestClass]属性)。
        [AssemblyInitialize]
    public Initialize()
    {
        ...
    }
  1. 使用该[AssemblyCleanup]属性装饰的方法停止Web服务器。
        [AssemblyCleanup]
    public Cleanup()
    {
        ...
    }

要启动IIS
Express,您可以仅Process.Start在IISExpress.exe上使用,并传入pathport参数。(要停止它,您可以简单地终止您开始的进程)。有关示例,请参见Fran的答案中的链接。

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

port参数必须是当你在本地运行的网站上使用相同的本地端口号(所以如果在浏览器窗口中的网址是HTTP://本地主机:57941,那么你需要的端口号为57941)。

2020-06-26