【发布时间】:2015-02-10 17:15:23
【问题描述】:
我已经成功地开始为我最近的存储过程更改编写 SSDT 单元测试。我注意到的一件事是,我最终为许多测试创建了类似的测试数据。这表明我应该在部署期间创建一组测试数据,作为部署后的步骤。然后,这些数据将可用于所有后续测试,并且不需要长时间创建预测试脚本。给定单元测试独有的数据将保留在预测试脚本中。
问题在于,部署后脚本不仅会在单元测试部署期间运行,而且还会在部署到真实环境期间运行。有没有办法让部署后步骤(或其中的一部分)仅在 SSDT 单元测试的部署期间运行?
我看到 app.config 中的测试设置包括要部署的数据库项目配置。但我不明白如何使不同的配置使用不同的 SQLCMD 变量。
我还看到我们可以在发布配置文件中设置不同的 SQLCMD 变量,但是我看不到 app.config 中的单元测试设置如何引用不同的发布配置文件。
【问题讨论】:
-
查看 .sqlproj 文件的内容 - 查看如何存在具有不同设置的“调试”和“发布”属性组。在这种情况下,您可以添加“测试”配置并为 SQLCMD 变量设置不同的默认值,而不是调试/发布。然后在单元测试配置对话框中将配置设置为“测试”。
-
@KevinCunnane:我会尝试这样做,但过去我在进行 Visual Studio UI 不支持的项目更改时遇到过不好的经历。此类更改在过去已丢失,因为更改未反映在 Visual Studio 的项目对象模型中。这是一个可维护性问题——为了理解该变量,有必要阅读 .sqlproj 文件。但是 UI 中没有任何迹象表明有任何理由去阅读 .sqlproj 文件!
-
我明白 - 这就是为什么我将其作为评论而不是完整答案的原因。这是解决您的问题的解决方法,但不是理想的解决方案...
标签: unit-testing deployment sql-server-data-tools