如果您认为您不应该将tSQLt框架或相关的单元测试部署到生产环境中,那么您是正确的。
您正在寻找的解决方案是复合材料项目。您的解决方案大概已经拥有一个包含所有代码的数据库项目 - 例如称为MyDb。您需要将另一个数据库项目添加到同一个解决方案中 - 您可以将其称为MyDb.tests(尽管名称不重要)。第二个数据库将包含tSQLt框架和所有测试。这是一个非常快人一步一步:
- 在沙箱称为MyDb.tests创建一个空数据库,并添加 的tSQLt框架,这个数据库
- 在Visual Studio中,导入从MyDb.tests的tSQLt对象到您的解决方案中的新的MyDb.tests数据库项目中。或者,您可以创建tSQLt数据库的dacpac并引用该数据库。 个人而言,在导入时,我通常选择按 架构对对象进行分组,因为这样可以很好地按照测试类对项目进行排序。
- 仍然在Visual Studio中,在MyDb.tests中,将数据库引用添加到 “master”然后将另一个数据库引用添加到您的解决方案中的MyDb数据库 项目。确保你指定了相同的服务器,相同的数据库 。开始向MyDb.tests添加测试,同时继续到 在MyDb中编写您的生产代码。
- 当您将MyDb.Tests构建或发布到您的沙盒时,生成的 数据库将包含来自MyDb的tSQLt框架,您的测试和所有 对象和代码。
- 在MyDb.tests中,您甚至可以添加一个后期部署脚本,其中 包含对
tSQLt.RunAll
的调用,以便您每次重新启动MyDb.tests项目时都会运行 。
当您开始部署到测试,UAT或生产时,您只需从MyDb项目构建和发布,并且不包含任何tSQLt框架或测试。
还有比这更给它一点 - 特别是如果你喜欢在SSMS来开发,然后导入您的对象回来到Visual Studio,但这里有几个链接,可以帮助:
https://kzhendev.wordpress.com/2014/01/08/setting-up-ssdt-database-projects-and-tsqlt/
https://www.red-gate.com/simple-talk/sql/sql-tools/sql-server-data-tools-ssdt-and-database-references/
你是在谈论TFS SQL或SSDT项目(Visual Studio中的简单数据库项目)?我不确定TFS SQL是什么意思...... –
这是SSDT项目(Visual Studio的数据库项目) –
@datacentricity已经给出正确答案了 –