如何在TFS下禁用发布模式下的单元测试

3
我希望设置TFS来构建我的解决方案的Debug和Release版本,但只在Debug模式下运行单元测试。我已经尝试在我的解决方案的配置属性中禁用测试项目的构建,但无济于事。令人烦恼的是,在Release模式下测试将总是失败,因为它似乎找不到文件,即使它们存在...
那么,有人知道如何让TFS仅在Debug模式下运行单元测试(但仍然构建Debug和Release模式)吗?
2个回答

4

在VS2010中:

Team Explorer项目生成 → 在你的"生成定义"中选择编辑生成定义进程

在这里,你应该进行以下配置:

  • 1.必填项→要生成的项目:选择要构建的项目和配置,即您的情况下的Release或Debug
  • 3.高级→禁用测试:True/False

我在“编辑生成定义”中找不到“进程”选项卡。那里只有以下选项卡:常规、触发器、工作区、生成默认值、项目文件和保留策略。(注意:我使用的是VS2010和TFS2008。) - SF Lee
我认为“进程”选项卡仅存在于TFS2010中,而不是TFS2008中。(TFS2008使用设置文件代替。)但是,我仍然认为它不能满足我的需求。我需要同时构建Debug和Release版本,但仅对Debug版本运行单元测试。 - SF Lee
很遗憾,我身边没有tfs2008机器,所以无法帮助你解决tfs2008的问题。另一个可能的解决方案是在“生成”→“生成配置”中更改构建配置,并取消选择所有单元测试项目旁边的所有“生成”复选框。 - Akim
这就是我为发布版本所做的。但它没有起作用... :( 奇怪的是,我的旧单元测试项目(从VS2008升级)如果在发布模式下禁用它们,则按照我想要的方式工作。但所有新的单元测试项目由于某些原因而无法正常工作。我也没有看到.csproj文件之间有任何明显的区别。(它们是不同的,但只与单元测试无关的事物有关,并且它们都是默认值。) - SF Lee

2

我终于找到了如何做到这一点。在TFS构建定义文件(.proj)中,列出测试列表/DLL的部分中,只需为每个项目添加一个$(Configuration)条件,如下所示:

<ItemGroup>
    <MetaDataFile Condition="'$(Configuration)'=='Debug'" Include="$(BuildProjectFolderPath)/SubFolders/MyTestListFile.vsmdi">
      <TestList>My Test List Name</TestList>
    </MetaDataFile>

    <TestContainer Condition="'$(Configuration)'=='Debug'" Include="$(OutDir)\MyTests.dll" />
</ItemGroup>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接