提问人:John Saunders 提问时间:12/12/2014 更新时间:1/16/2015 访问量:559
如何在 SSDT 单元测试中部署数据,但仅适用于单元测试
How to Deploy Data in an SSDT Unit Test but Only for the Unit Test
问:
我已成功开始为我最近的存储过程更改编写 SSDT 单元测试。我注意到的一件事是,我最终为许多测试创建了类似的测试数据。这向我建议,我应该在部署期间创建一组测试数据,作为部署后的步骤。然后,这些数据将可用于所有后续测试,并且不需要冗长地创建预测试脚本。给定单元测试所特有的数据将保留在预测试脚本中。
问题在于,部署后脚本不仅会在单元测试的部署期间运行,还会在部署到实际环境期间运行。有没有办法使部署后步骤(或其中的一部分)仅在 SSDT 单元测试的部署期间运行?
我已经看到app.config中的测试设置包括要部署的数据库项目配置。但我不明白如何使不同的配置使用不同的 SQLCMD 变量。
我还看到我们可以在发布配置文件中设置不同的 SQLCMD 变量,但我不明白 app.config 中的单元测试设置如何引用不同的发布配置文件。
答:
1赞
SAS
1/7/2015
#1
可以使用 IF 语句,检查@@SERVERNAME,并且仅在单元测试服务器上运行单元测试代码,对其他环境使用相同类型的测试。
0赞
SAS
1/16/2015
#2
或者,可以在 TFS 生成定义中使用内部版本号。如果 Build 包含子字符串 'test',则可以执行测试代码,否则不执行。然后,请确保在所有版本中设置适当的内部版本号。
评论
0赞
John Saunders
1/17/2015
如何从测试中访问内部版本号?
0赞
SAS
1/19/2015
我在SQL中使用SQLCMD变量,例如$(ChangeSets)和$(VersionNumber)。我想你可以做同样的事情,也许你需要一个文件或表来进行中间存储。
评论