从tfs build中排除测试

时间:2012-02-20 11:29:55

标签: unit-testing tfs tfsbuild

我想从我的持续集成构建中排除一些测试,但我还没有找到方法。

我尝试过的其中一件事是将这些测试的优先级设置为-2,然后在我指定的构建时指定最小测试优先级= -1,但它仍然运行这些测试。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:9)

您应该使用“测试类别”方法,而不是使用已经描述过的“测试列表”。测试列表& VSMDI功能实际上已在Visual Studio 2010中弃用,Microsoft可能会在Visual Studio的未来版本中完全删除该功能。

如果您想了解有关如何使用测试类别的更多信息,尤其是自动构建过程,请查看此博文:http://www.edsquared.com/2009/09/25/Test+Categories+And+Running+A+Subset+Of+Tests+In+Team+Foundation+Server+2010.aspx

您还可以通过在类别名称前指定!(感叹号)字符来排除测试类别,以进一步定义过滤器。

答案 1 :(得分:3)

如果您正在使用MSTest,则可以为持续集成所需的测试创建Test List

答案 2 :(得分:2)

使用MSTest,您可以简单地创建两个测试项目(程序集),并仅在构建配置中指定一个用于测试。在MSBuild中,这是要走的路。对于新的基于WF的构建定义,我目前没有样本:

<ItemGroup>
    <!--  TEST ARGUMENTS
     If the RunTest property is set to true then the following test arguments will be used to run 
     tests. Tests can be run by specifying one or more test lists and/or one or more test containers.

     To run tests using test lists, add MetaDataFile items and associated TestLists here.  Paths can 
     be server paths or local paths, but server paths relative to the location of this file are highly 
     recommended:

        <MetaDataFile Include="$(BuildProjectFolderPath)/HelloWorld/HelloWorld.vsmdi">
            <TestList>BVT1;BVT2</TestList>
        </MetaDataFile>

     To run tests using test containers, add TestContainer items here:

        <TestContainer Include="$(OutDir)\AutomatedBuildTests.dll" />
        <TestContainer Include="$(SolutionRoot)\TestProject\WebTest1.webtest" />
        <TestContainer Include="$(SolutionRoot)\TestProject\LoadTest1.loadtest" />

     Use %2a instead of * and %3f instead of ? to prevent expansion before test assemblies are built
    -->
</ItemGroup>

<PropertyGroup>
    <RunConfigFile>$(SolutionRoot)\LocalTestRun.testrunconfig</RunConfigFile>
</PropertyGroup>

提示:要使用通用构建定义,我们将所有测试项目命名为“AutomatedBuildTests”,即没有解决方案的差异。因此,构建定义可以包含在始终执行正确测试集的任何现有构建定义(甚至是常见构建定义)中。在添加“if exists”检查以允许构建定义仅在存在Test程序集时运行测试将是一项简单的任务。当没有找到测试程序集时,我们不使用它来获取构建错误,因为我们绝对希望使用所有使用此定义的构建进行测试。

答案 3 :(得分:0)

我的偏好如上所述使用测试列表,但是有些人发布了合并/编辑vsmdi文件...我们最终得到了单独的解决方案并使用模式匹配来执行相应DLL中的所有测试。

答案 4 :(得分:0)

在Visual Studio 2012及更高版本中,您可以使用Test case filter设置配置构建定义。

此设置是构建定义的一部分。 打开构建定义并导航到Process选项卡。在3. Test部分中,您可以定义多个测试源。对于每个测试源,您可以指定Test case filter

您可以在此MSDN文章中找到详细信息:Running selective unit tests in VS 2012 RC using TestCaseFilter

我复制了支持的运算符和本文中的一些示例:

  

RC支持的运营商是:

     

1. =(等于)

     

2。!=(不等于)

     

3.~(仅包含字符串值的子字符串)

     

4.&安培; (和)

     

5. | (或)

     

6.()(分组的paranthesis)

     

可以使用这些运算符创建Expresssion作为任何有效的逻辑条件。 &安培; (和)有更高的   优先于| (或)在评估表达时。

     

E.g。
  “TestCategory = NAR |优先级= 1”   “所有者=维克拉姆&放大器;!TestCategory = UI”   “FullyQualifiedName〜NameSpace.Class”
  “(TestCategory!= UI&amp;(Priority = 1 | Priority = 2))|(TestCategory = UI&amp; Priority = 1)”

另一种可能性是在一个构建定义中将一些测试源放在其他构建定义中的某些(即更多或更少)测试源中。