【问题标题】:SQL Server Database Unit Testing and Continuous IntegrationSQL Server 数据库单元测试和持续集成
【发布时间】:2017-02-08 04:57:15
【问题描述】:

我在 Visual Studio 2013 中内置了一套 SQL Server 数据库单元测试来测试存储过程和函数。这些测试在我的本地数据库上运行良好,但我也希望它们作为 CI 进程的一部分在 DEV 服务器的数据库上运行。

为了实现这一点,我正在构建测试 DLL 并将 DLL 和配置文件复制到 DEV 服务器,然后运行命令行 vstest.console.exe 进行测试。这在我的本地机器上运行良好,但是当我尝试在 DEV 上运行它时,每次测试都会出现以下异常:

从配置文件中读取 SQL Server 单元测试设置时出错。单击测试项目,从 SQL 菜单中打开 SQL Server 测试配置对话框,将设置添加到对话框中,然后重新构建项目。

我尝试使用慢 cheetah 来确保在构建解决方案之前应用 App.Config 转换,我可以看到转换正在应用到配置文件中,但我的测试仍然失败。

有没有人想出办法做到这一点?必须重建 DLL 才能使用配置文件中的连接字符串更改,这似乎很奇怪。

我也尝试按照post 中的建议进行操作,但没有成功。

【问题讨论】:

    标签: c# sql-server visual-studio unit-testing sql-server-data-tools


    【解决方案1】:

    我终于得到了这个工作。似乎用于 SQL 单元测试的配置文件的结构发生了变化。在我的配置中,我有一个名为 SqlUnitTesting 的部分,其中包含 ExecutionContext 和 PrivilegedContext 的连接字符串。我注意到,当我创建一个新的单元测试项目时,部分名称已更改为 SqlUnitTesting_VS2013。将我现有的配置更改为此解决了问题。我只能假设我在两个环境中调用的 vstest.console.exe 版本略有不同。

    总结如何从命令行 vstest.console.exe 应用程序让 SQL Server 单元测试在多个环境中工作,这些是要采取的步骤:

    1. 安装适用于 Visual Studio 的 Slow Cheetah 扩展,它根据所选的构建配置管理 App.config 文件的转换。
    2. 确保您的 App.config 文件有一个名为 SqlUnitTesting_VS2013 的部分,其中包含您的 ExecutionContext 和 PrivilegedContect 连接字符串。
    3. 根据构建配置(调试、发布等)为您使用的每个环境设置慢速 cheetah 转换。您需要阅读 Slow Cheetah 文档才能执行此操作,但基本上您正在为每个环境设置连接字符串,这些连接字符串在构建时转换为 App.config。
    4. 使用您的目标环境配置构建解决方案。
    5. 将 DLL 和配置从相关的 bin/buildConfiguration 目录复制到您的目标环境。
    6. 运行 vstest.console.exe 并观察您的测试是否通过。

    我希望这对某人有帮助。

    【讨论】:

      【解决方案2】:

      以下源代码示例基于 Greg 的回答。

      app.config

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
          <configSections>...</configSections>
          <SqlUnitTesting>
             <DataGeneration .. />
             <ExecutionContext .. />
             <PrivilegedContext.. />
          </SqlUnitTesting>
          <startup>...</startup>
      </configuration>
      

      app.Release.config

      <?xml version="1.0" encoding="utf-8"?>
      <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
          <configSections>...</configSections>
          <SqlUnitTesting xdt:Transform="Replace">
             <DataGeneration .. />
             <ExecutionContext .. />
             <PrivilegedContext.. />
          </SqlUnitTesting>
          <startup>...</startup>
      </configuration>
      

      更多关于SlowCheetah的信息,您可以参考以下链接:GithubMicrosoft DevBlogs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-17
        • 2010-10-02
        • 1970-01-01
        相关资源
        最近更新 更多