如何为TFS CI测试环境

时间:2015-06-16 07:50:44

标签: .net tfs continuous-integration

我有一些需要连接到数据库的集成测试。在app.config中,我有一个指向服务器'。'的连接字符串。当我在工作站上的VS中运行测试时,测试运行正常,因为我有一个SQL服务器实例也在本地运行。

我们有一个CI构建& test设置为在TFS上运行,但在此环境中,DB不在同一台机器上,因此app.config中的connectionstring错误且测试无法连接。

如何配置TFS CI构建以更新app.config以指向其他数据库?或者,我应该采用不同的方式解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

在通过TFS构建构建应用程序时,您可以使用XML转换来修改app.config(意味着您将有两个解决方案配置:一个用于本地构建VS,另一个用于TFS您可以在构建时使用pre-build脚本来修改app.config连接字符串。

答案 1 :(得分:0)

您最好将集成测试移至测试环境。如果构建速度快且不需要应用程序实例,那就最好了。

如果您进行构建和单元测试,您可以在Visual Studio的发布管理中启动自动发布,可以将其配置为运行集成和UI测试。

http://nakedalm.com/create-release-management-pipeline-professional-developers/

发布工具负责查看连接字符串等等。

答案 2 :(得分:0)

为了解决这个问题,我使用VS插件选择了XML转换路由slowcheetah (idea taken here)

使用此工具,您可以为每个环境创建构建配置(例如:dev,QA,PP),并生成app.config的XML转换。

替换所需的部分示例:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <SqlUnitTesting xdt:Transform="Replace">
    <DataGeneration ClearDatabase="true" />
    <ExecutionContext Provider="System.Data.SqlClient" ConnectionString="Data Source=sqspsqlxx;Initial Catalog=IC_RMI_Result;Integrated Security=True;Pooling=False;MultipleActiveResultSets=False"
        CommandTimeout="30" />
    <PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="Data Source=sqpsqlxx;Initial Catalog=IC_RMI_Result;Integrated Security=True;Pooling=False;MultipleActiveResultSets=False"
        CommandTimeout="30" />
  </SqlUnitTesting>

对于TFS集成,可能有一种方法可以使用out of box nuget restore,但我只是将包添加到源代码控制中。

在teamp构建队列(或构建定义中的harcode)中,只需指定要定位的构建配置(dev,qa,PP)。

(注意:我的团队构建代理使用Windows crendentials,因此我确保该帐户具有目标数据库所需的权限)