Asp.net 使用C#项目进行硒测试(使用外部硒网格)

Asp.net 使用C#项目进行硒测试(使用外部硒网格),asp.net,selenium,iis,owin,cassini-dev,Asp.net,Selenium,Iis,Owin,Cassini Dev,所以我遇到了一个有趣的问题,试图让Selenium正常工作 最初我有这样的设置: 卡西尼德夫作为我测试套件的一部分启动 外部硒电网连接到CassiniDev实例,用于测试软件 与IIS Express相比,此方法的好处是: 卡西尼德夫允许外部连接而无需复杂的诡计,这意味着电网可以轻松连接 使用网格可以让我轻松地使用更多的计算机和不同的平台 使用CassiniDev可以让我获得开箱即用的代码覆盖率(一些解决方案可以让我在IIS上获得代码覆盖率,但代码覆盖率是我现在切换到IIS时遇到的最小问题

所以我遇到了一个有趣的问题,试图让Selenium正常工作

最初我有这样的设置:

  • 卡西尼德夫作为我测试套件的一部分启动
  • 外部硒电网连接到CassiniDev实例,用于测试软件
与IIS Express相比,此方法的好处是:

  • 卡西尼德夫允许外部连接而无需复杂的诡计,这意味着电网可以轻松连接
  • 使用网格可以让我轻松地使用更多的计算机和不同的平台
  • 使用CassiniDev可以让我获得开箱即用的代码覆盖率(一些解决方案可以让我在IIS上获得代码覆盖率,但代码覆盖率是我现在切换到IIS时遇到的最小问题)
但是,我最近将OWIN添加到此项目中,由于需要集成的IIS管道才能正常工作,OWIN无法与CassiniDev一起运行(请参阅),这给我留下了两个选择:

  • 使用IIS Express,丢失代码覆盖率,丢失网格,丢失多线程FRM测试,复杂的启动/关闭,开发机器必须安装Selenium才能在本地运行测试,构建代理需要安装Selenium
  • 使用全面的IIS,丢失代码覆盖率,保持网格,保持多平台,大量复杂的测试(协调IIS部署),构建代理需要安装完整的IIS,任何依赖项,想要运行Selenium的开发机器都需要安装IIS
  • 将应用程序发布到IIS服务器进行测试,不进行本地开发测试,也不进行并行测试(除非我们有复杂的发布设置)
  • 把硒测试扔进垃圾箱
  • 查看OWIN自托管(该站点包含webforms内容,所以我不认为我可以自托管,也不确定当我部署到IIS时,这在多大程度上是兼容的)
  • 在测试时禁用OWIN(限制我实际使用OWIN的能力,尽管我没有测试模块或系统)

所有这些解决方案充其量看起来都很糟糕,失去了我与卡西尼德夫合作的所有好处。还有其他选择/想法吗?

当我们从32位切换到64位时,CassiniDev在64位上无法工作(没有非正式的重建),所以我们在开发机器上切换到IIS。从那以后,我们真的没有回头看。在您的开发机器上需要IIS可能需要一些额外的工作,但我认为从长远来看,测试和生产之间的一致性是值得的。我认为对于您自己的模块,您甚至可以通过在进程外调试IIS来保持代码覆盖率?不过,我不确定您的部署方案是什么,我们只是将一些文件复制到正确的位置。部署是Octopus Deploy,所以没什么大不了的,我不确定如何从TeamCity的命令行或XUnit驱动的Selenium测试中调试进程外的IIS。。。我想我可以配置一个默认的IIS目录,让构建代理清理该目录,然后将应用程序部署到该目录,但不确定这是否会是一场后勤噩梦。当我们从32位切换到64位时,CassiniDev在64位上无法工作(没有非正式的重建),所以我们在开发机器上切换到IIS。从那以后,我们真的没有回头看。在您的开发机器上需要IIS可能需要一些额外的工作,但我认为从长远来看,测试和生产之间的一致性是值得的。我认为对于您自己的模块,您甚至可以通过在进程外调试IIS来保持代码覆盖率?不过,我不确定您的部署方案是什么,我们只是将一些文件复制到正确的位置。部署是Octopus Deploy,所以没什么大不了的,我不确定如何从TeamCity的命令行或XUnit驱动的Selenium测试中调试进程外的IIS。。。我想我可以配置一个默认的IIS目录,让构建代理清理该目录,然后将应用程序部署到该目录,但不确定这是否会是一场噩梦。