asp.net - 您将如何交换连接字符串来访问测试数据库以进行单元测试?

标签 asp.net sql vb.net unit-testing n-tier-architecture

我已经设置了一个测试数据库来开始对我最近添加到的应用程序进行单元测试。它是一个 3 层设计(表示层、BOL 和 DAL),这是我第一次编写单元测试。

我决定从 BOL 开始,我认为最好的方法是将 ConnectionString(已作为共享字符串传递)替换为指向我的新测试数据库的 ConnectionString。但是,我不想更改任何生产代码。我只是希望在单元测试期间以某种方式将应用程序重定向到测试数据库。我该如何实现这一目标?

最佳答案

我通常做的是创建一个配置部分,其中包含确定要使用哪个连接字符串的功能。

这是一个基本示例:

static ConfigurationSettings
{
     static String ConnectionString
     {
        get
        {
           var result = "TESTCONNECTIONSTRING";
           if (ConfigurationManager.ConnectionStrings["SOMEKEY"] != null)
               result = ConfigurationManager.ConnectionStrings["SOMEKEY"];
           return result;
     }
}

这样,我就不必担心如何连接到系统,而且您还可以在测试中重写此行为,通过添加 setter 来完成您想要的任务。

我不采用多个配置文件路线的原因是,在测试套件(例如 NUnit testrunner)中运行时我无法使用配置文件。

关于asp.net - 您将如何交换连接字符串来访问测试数据库以进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1027155/

相关文章:

c# - 如何计算 asp.net 表单中的复选框

asp.net - Kentico CMS 搜索结果

sql - 基于两列创建数字规则

c# - VB Collection - 转换为现代集合

vb.net - 使字体粗体/斜体/下划线 Visual Basic

c# - EPPlus - 按索引而不是按字母顺序处理多列

c# - 将 GridViewComboBoxColumn 绑定(bind)到数据源

asp.net - 带有 twitter Bootstrap 组件的基本 asp.net 表单

mysql - 检查日期范围是否在月份(日历)

mysql - 如何在MySQL中从多个表的单列中选择多个值?