在我们的TFS 2013项目中,我们有一组简单的基于MSBuild的集成测试以及我们的单元测试,测试存储过程和需要数据库服务器的其他逻辑,例如
[TestMethod]
[TestCategory("Integration")]
public void SomeTest()
{
InitialiseData();
var results = RunStoredProcedure();
AssertResultIsCorrect(result);
}
正如您所看到的,我们已将这些测试标记为“集成”,以便我们可以提供一个测试用例过滤器,在我们不想运行它们时排除这些测试。这些测试都是针对已安装的数据库副本运行的(我们有一个将数据库的最新副本部署到SQL Server实例的进程)。
我们想要做的是在TFS中创建集成测试构建定义,我们可以安排部署数据库,然后针对特定的 SQL Server实例运行所有这些测试。
目前我们使用标准TFS构建过程和两个测试源 - 第一个运行“单元测试”,安装数据库,第二个包含所有实际集成测试。我们遇到的问题是传递连接字符串&数据库名称从构建定义到单元测试。目前,连接字符串位于每个测试项目的app.config文件中,但这并不理想,因为这意味着我们不断尝试运行失败,原因是开发人员检查错误的连接字符串或在本地运行测试在构建运行的同时针对构建数据库。此设置还限制我们一次运行一个构建。
有没有办法可以指定连接字符串和数据库名称作为构建工作流程模板的一部分?
答案 0 :(得分:0)
对于您的配置转换和SlowCheetah组合使用VS linked files,我认为您可以解决此问题(并且基于您可能已经拥有的OP :)。在您的解决方案中为您描述的方案创建新的解决方案配置。该解决方案不会在开发机器上使用,只能通过TFS构建定义(在Process,要构建的项目,要构建的配置下)。
然后,解决方案的配置管理器将仅针对测试项目使用解决方案配置。
为新的解决方案配置添加SlowCheetah转换,并为新的转换添加TFS所需的db conn字符串。
现在在测试项目中,将所有配置文件复制为链接文件。这将允许测试执行遵守SlowCheetah将转换的测试配置文件。您可能需要在测试项目中调整配置读数以解决此问题。
这将解决方案配置仅隔离到TFS服务器,因为它只会使用新的解决方案配置进行构建。现在TFS将有一个配置文件,指向您的特定TFS数据库连接,这是其他机器所不尊重的。