【问题标题】:How do I coordinate settings between my ASP.NET MVC 3 app and SpecFlow?如何协调我的 ASP.NET MVC 3 应用程序和 SpecFlow 之间的设置?
【发布时间】:2011-10-01 05:11:45
【问题描述】:

所以我有一个 VS 2010 解决方案,其中包含一个 ASP.NET MVC 3 项目和一个 SpecFlow 项目(使用 NUnit 作为测试运行器)来测试前者。在 SpecFlow 下进行测试时(通过运行 SpecFlow 项目),我想更改 MVC 应用程序的 ConfigurationManager.AppSettings 字典中的参数,以使其连接到测试数据库。但是,此更改似乎不会影响正在运行的应用程序,因此我猜测试和应用程序不共享状态。

如何在 MVC 应用程序项目和 SpecFlow 项目之间共享此应用程序设置,以便它们使用相同的数据库?

编辑: 我发现问题实际上并不是项目(MVC 和 SpecFlow)之间的共享设置之一,而是两个进程之间的共享设置。原因是我通过 WatiN 测试 MVC,这意味着在它自己的进程中运行的开发服务器正在被测试执行。因此,我最初问题的前提从一开始就是错误的,鉴于原始前提,我认为 Jason 的回答是有效的。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 nunit specflow


    【解决方案1】:

    在您的测试项目 (SpecFlow) 中创建一个新的 app.config(除非它已经存在)并将 appSettings 部分与您的测试数据库连接字符串一起添加到其中。 IIRC 该网站有望从测试项目的appSettings 而非网站中获取连接字符串。

    【讨论】:

    • 如果我将设置添加到测试项目的app.config文件中的appSettings中,该设置是否也会应用于MVC应用项目??
    • 好吧,我刚刚测试了编辑测试项目的 app.config 文件,显然它不会影响我所追求的应用项目。此外,我更希望能够在测试设置逻辑中动态定义设置。不确定我将如何静态处理(在 app.config 中),因为目前至少数据库位置取决于一些运行时参数。
    • 你能在你的测试设置代码中使用ConfigurationManager.AppSettings["ConnString"] = "blah";吗?至少你可以为你的测试动态设置连接字符串。
    • 嗯,这就是我描述的最初在我的问题中尝试过的方法。问题是测试代码显然不与 MVC 应用程序代码共享状态,因为 MVC 应用程序代码不受更改设置的影响。另外,我无法在调试测试时在应用代码中设置断点,所以看起来应用在不同的进程中运行。
    • 我想我已经意识到为什么测试和应用程序代码不共享状态了;我正在使用 WatiN,因此测试正在运行我的开发服务器,而不是将我的应用程序代码加载为库,我猜这是正常的单元测试方法。因此测试和应用程序逻辑在运行时完全解耦,我想必须单独配置。
    猜你喜欢
    • 1970-01-01
    • 2016-09-30
    • 2011-11-30
    • 2011-07-11
    • 2012-06-06
    • 2019-04-01
    • 2012-11-29
    • 1970-01-01
    • 2011-06-10
    相关资源
    最近更新 更多