0

我正在使用 WebAii 库进行 UI 测试 - 我想测试我的组件是否显示与数据库中的记录相同的记录,因此我需要切换应用程序的连接字符串以指向测试数据库,以便仅在运行测试时。最好的方法是什么?如何在运行应用程序之前动态更改连接字符串?谢谢

4

2 回答 2

0

您是否将连接字符串存储在 Web.config 文件中?如果是这样,我会在开始测试之前部署一个新的 Web.config,然后使用命令行发送一个 IISRESET

仅供参考,这些是我们整天在WebAii 专用公共论坛上回答的问题。

Cody Telerik 技术支持

于 2012-05-11T03:43:22.463 回答
0

它是一个什么样的应用程序?这首先可能表明代码没有很好地分解。其次,通常有一个单独的环境来测试代码。

例如,如果您使用 Visual Studio 部署到 ASP.NET ,则可以在部署到test.contoso.com与 www.contoso.com时使用Web.config 文件转换来设置不同的值。转换语法允许您在部署不同的配置时定义新的连接字符串,或从基本 Web.config 更改现有的连接字符串。

如果您有一个单一的环境并对其进行控制,您可能会编写几个(Power)shell 脚本来在测试之前将带有“测试”连接字符串的 web.config 复制到您的应用程序根目录。然后在运行测试后运行第二个脚本以重置原始 web.config。

如果您有权访问您将运行测试的上下文中的部署目录,您甚至可以简单地将 Web.test.config 文件包含在您的单元测试项目中。在[AssemblyInitialize]

  1. 文件复制 _\\{your app server}{your app directory}\Web.config 到\\{your app server}{your app directory}\Web.config.orig
  2. 将Web.test.config文件复制到\\{your app server}{your app directory}\Web.config
  3. 睡几秒?

然后在[AssemblyCleanup].

也存在其他策略。您可以在调试模式下为您的应用程序构建一个覆盖,以检查各种内容(特殊文件、附加配置、cookie、额外查询字符串)。或者您可以在您的应用程序中有一个设置管理器,您可以在安排测试时在测试设置中进行检测(单击 UI 以更改数据库设置)。

但是,您很可能通过分解代码来减少依赖关系,从而获得最好的复合奖励。然后你可以编写存根/模拟/伪造数据库的单元测试。您可以使用代码覆盖率工具来验证您是否测试了特定场景,或者查看其他集成测试是否会在此时重复覆盖率。

于 2013-06-09T00:37:18.223 回答