【问题标题】:copying to teamcity's out directory before running unit tests在运行单元测试之前复制到 teamcity 的 out 目录
【发布时间】:2015-07-02 20:17:32
【问题描述】:

所以我的情况是我终于完成了为 CI 配置 TeamCity。我把它发给run my unit tests with some friendly help on SO

但是,许多单元测试会失败,因为一旦 unittests.dll 构建并准备好运行,就需要在它旁边有一个配置文件。

我写了一个简单的Command Line 步骤:

copy %system.teamcity.build.checkoutDir%\xx.configfile <destination>

目标是问题所在,我需要它是 teamcity 创建的 Out 目录。

TC 创建SYSTEM_&lt;machinename&gt; &lt;datetime&gt;\OUT。一个例子:

C:\TeamCity\buildAgent\temp\buildTmp\SYSTEM_GIDEON 2015-07-02 16_51_09\Out

里面有我的 unittests.dll,我想把我的配置文件复制到那里。我可以在命令行脚本中使用什么环境变量或(其他)?

(1)构建测试是一个步骤,然后我想运行(2)复制配置步骤,然后(3)运行测试。在步骤 (1) 之后,我有了 xxx\xxx\Out 目录,我需要某个变量中的那个目录。

我正在使用 Teamcity 9.0.2

【问题讨论】:

    标签: continuous-integration teamcity


    【解决方案1】:

    我认为您的问题与 TeamCity 无关,而与 MSTest 的工作方式有关。您需要将 .config 文件设为 DeploymentItem,并让您的测试将其部署到 MSTest 将在其中运行测试的目录。

    老实说,我很惊讶您没有在本地运行这个问题,这让我觉得如果您没有看到这个问题,您必须使用其他一些测试运行程序(如 ReSharper)来运行测试在您的本地计算机上。

    【讨论】:

    • 你说得对,我们前段时间遇到了问题。我们在某处发现了一个 hack,在 unittests.csproj 我们有一个额外的行 &lt;AllowedReferenceRelatedFileExtensions&gt; .pdb; .xml; .dll.config &lt;/AllowedReferenceRelatedFileExtensions&gt; 它将类库引用的引用的 dll 配置复制到 bin 中,但这不适用于 TC。我想知道是不是因为我使用 MSBuild 而不是“Visual Studio Build”
    • 可能是这样。解决方案将是删除 csproj 中的 hack 并让它在没有它的情况下在本地工作。要遵循的基本过程是 1. 确保文件放置在构建输出目录 (bin\debug) 中。如果该文件不存在,则 DeploymentItem 将无法找到它。通常这只是意味着将“复制到输出目录”设置为“始终”2。然后使用DeploymentItem 确保将文件部署到运行测试的 Out 目录。
    • 谢谢!!我刚刚将 DeploymentItem 属性包含到我的一个测试类中,它对需要特定文件的所有其他失败的测试类进行了排序。
    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多