首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Coypu和SpecFlow运行IIS服务器

使用Coypu和SpecFlow运行IIS服务器
EN

Stack Overflow用户
提问于 2012-04-21 06:39:57
回答 2查看 777关注 0票数 4

我已经花了很多时间在谷歌上寻找一些解决方案,但我无能为力!

我得到了一个MVC应用程序,我正在尝试使用Coypu和SpecFlow对我的视图进行“集成测试”。但我不知道该如何管理IIS服务器。有没有办法实际运行服务器(第一次开始测试),并使服务器使用一个特殊的“测试”DB (例如,内存中的RavenDB),在每个场景之后清空(并在后台填充)。

有没有更好或更简单的方法来做这件事?

EN

回答 2

Stack Overflow用户

发布于 2012-06-07 18:26:27

我对此也相当陌生,所以对答案持保留态度,但因为没有人回答……

有没有一种实际运行服务器的方法(第一次开始测试)……

您可以使用IIS Express,它可以通过命令行调用。您可以在通过System.Diagnostics.Process调用运行任何测试(我相信您可以使用SpecFlow中的[BeforeTestRun]属性)之前启动您的网站。

实际的命令行应该类似于例如

代码语言:javascript
复制
iisexpress.exe /path:c:\iisexpress\<your-site-published-to-filepath> /port:<anyport> /clr:v2.0

...并使服务器使用一个特殊的“测试”DB (例如,内存中的RavenDB),在每个场景之后清空(并在后台填充)。

为了使用特殊的测试DB,我猜这取决于您的数据访问是如何工作的。如果您可以相当容易地交换内存中的DB,那么我猜您可以这样做。尽管我的理解是集成测试应该尽可能接近生产环境,因此如果可能的话,请使用您在生产中使用的相同DBMS。

我所做的就是每次在测试运行之前,从prod DB的已知备份恢复到我的测试DB。在测试运行之前,我可以通过命令行/Process再次调用它。对于我的数据库,它是一个相当小的数据集,并且我可以只恢复与我的测试相关的表,所以对于集成测试来说,这种开销不会太大。(但是,这对于单元测试是不可接受的,因为在单元测试中可能会有模拟存储库或内存中的数据。)

票数 0
EN

Stack Overflow用户

发布于 2014-05-06 21:13:24

既然您已经在使用SpecFlow,那么就来看看SpecRun (http://www.specrun.com/)吧。

它是一个测试运行器,专为SpecFlow测试而设计,并添加了各种功能,从在测试资源管理器中更好地格式化测试名称这样的小便利,到支持对多个目标和配置文件转换运行相同的SpecFlow测试。

使用SpecRun,您可以定义一个“配置文件”,它将用于运行您的测试,这与VS .runsettings文件没有什么不同。在其中,您可以指定:

代码语言:javascript
复制
<DeploymentTransformation>
  <Steps>
      <IISExpress webAppFolder="..\..\MyProject.Web" port="5555"/>
  </Steps>
</DeploymentTransformation>

然后,在运行测试之前,SpecRun将启动一个运行该网站的IISExpress实例。在同一位置,您还可以设置自定义部署转换(使用标准App.Config转换)来覆盖应用程序的Web.config中的连接字符串,以便它指向内存中的DB。

我使用SpecRun的唯一问题是文档不是很好,有很多视频演示,但我更愿意有几个书面教程。我想这就是StackOverflow在这里的目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10254443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档