首页 > 解决方案 > TFS vNext TestRunner 忽略双 dll

问题描述

在我们的解决方案中,我们有大约 60 个项目。有一些核心“ish”库被其他项目引用。我们的单元测试与生产代码放在相同的 dll 中(没有特定的单元测试项目)。

我的问题始于在我们的 Team Foundation Server 中使用 Visual Studio Test Runner 时的持续集成构建。我希望测试运行器自动运行创建的 dll 中的所有测试。由于方便的原因,我不想手动添加创建的 dll 的路径。

目前我正在使用这样的通配符(我们所有的 dll 都以 Company.* 开头):

$(Build.SourcesDirectory)\**\bin\x64\Release\Company.*.dll

以这种方式找到所有 dll,但它们被发现不止一次,因为 dll 被复制到引用 dll 的输出目录。这会产生大量时间浪费在多次运行相同的单元测试(> 20)上。

那么我在寻找什么:

  1. 最好是告诉 vstest.console.exe 包含已经运行的 dll(我检查了命令行选项 - 什么都没有)。
  2. 另一种选择是 TFS 的迷你匹配模板的特殊通配符,这样就不会将双 dll 传递给 vstest.console.exe(我什么都不知道,谷歌也不知道)。
  3. 另一个最佳实践是你们如何处理单元测试,以便它们在持续集成中自动运行。

标签: c#unit-testingtfsmstest

解决方案


您没有使用通用和推荐的项目结构。我们通常使用 NuGet 来管理 TFS 源代码管理中的 dll,而不是项目引用。还要创建一个单独的测试项目来处理单元测试。

有关工作流程,请查看此 MSDN 博客:持续集成和持续部署工作流程中的测试

在您的情况下,您可能必须指定相应的 dll 路径进行测试。您还可以添加一个任务以将这些 dll 复制到另一个文件夹,然后将 *.wildcard 用于所有测试 dll。


推荐阅读