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

标签 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 上)。

最佳答案

好的,这是一种方法:

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

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

    [AssemblyCleanup]
    public Cleanup()
    {
        ...
    }
    

要启动 IIS Express,您只需在 IISExpress.exe 上使用 Process.Start,传入 pathport 参数即可。 (要停止它,您只需终止您启动的进程即可)。有关示例,请参阅 Fran 的答案中的链接。

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

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

关于asp.net-mvc - 我可以使用同一解决方案中单元测试项目中的 Selenium 来测试 ASP.NET MVC Web 项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691016/

相关文章:

ajax - ajaxError 函数不返回 XmlHttpRequest.responseJSON

c# - 安装 .NET Core 全局工具时出错 : "Could not find a part of the path..."

visual-studio - Expression Blend 4.0 - 自动重新加载编辑过的文件?

android - DisplayAlert 方法导致 xamarin.form 崩溃

unit-testing - CakePHP 测试 - 单元测试

PHPUnit - 通过命令行测试运行器运行特定的测试套件

c# - 模拟对象上的异步回调不等待

c# - 如何使用数据注释来验证输入的特定类型

c# - 如何捕获违反 maxRequestLength 的 ConfigurationErrorsException?

c# - MVC - 设置 SelectList 的选定值