Visual Studio:从 SQL Studio 单元测试加载 SQL 文件

Visual Studio: Load SQL file from SQL Studio Unit Test

我正在尝试为我的一些 SQL 查询设置 Microsoft Visual Studio 单元测试环境。我的场景有点倒退到典型的软件开发场景。对于我处理的任何给定工作产品,我试图通过传递不同的参数并比较结果,在不同的场景中练习 ONE 查询。

我的目的是在我的每个单元测试中从 .sql 文件加载我的 SQL 查询。

如何打开我的 SQL 文件以便从我的 SqlServerUnitTest1.cs 文件中读取?

解决这个问题很复杂,所以我将描述我所做工作的大纲。其中一些可能是不必要的,但至少我的说明将帮助您理解所有重要步骤:

  1. 创建一个新的解决方案,并在其中创建一个新的单元测试项目。 (如果您像我一样使用 Reporting Services,请在旁边创建一个 Reporting 项目)
  2. 将查询导入到您的测试项目,并将属性设置为 "Copy if Newer" 或 "Always Copy"。
  3. 在测试中加载 SQL 文件。我写了一个形式的函数:

.

public static string LoadSqlFile(string name)
{
  string path = Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
                            , @"sql\" +  name
                            );

  return File.ReadAllText(path);
}

通过文件名加载 SQL 文件。 这是我的具体问题的答案。

  1. 编写测试(使用 UnitTest 模板,而不是 SqlServerUnitTest 模板)。我编写了一些代码来从 JSON 生成测试,这使我团队中的非 C# 用户更容易做到这一点。在我的用例中,每个测试都有一个未声明的参数,该参数被传递给测试。 JSON 还包含预期结果列表,我们将其与结果进行比较。