Unit testing 从tfs构建中排除测试

Unit testing 从tfs构建中排除测试,unit-testing,tfs,tfsbuild,Unit Testing,Tfs,Tfsbuild,我想从我的持续集成构建中排除一些测试,但我还没有找到这样做的方法 我尝试过的一件事是将这些测试的优先级设置为-2,然后在构建中我指定了最小测试优先级=-1,但它仍然运行这些测试 任何帮助都将不胜感激。如果您使用MSTest,您可以为持续集成所需的测试创建一个测试列表。我的首选是如上所述使用测试列表,但有些人发布了合并/编辑vsmdi文件的命令。。。我们最终使用单独的解决方案,并使用模式匹配来执行相应DLL中的所有测试。使用MSTest,您只需创建两个测试项目(程序集),并在构建配置中仅指定一个用

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

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


任何帮助都将不胜感激。

如果您使用MSTest,您可以为持续集成所需的测试创建一个测试列表。

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

使用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>

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

您应该使用“测试类别”方法,而不是使用前面描述的“测试列表”。在VisualStudio2010中,测试列表和VSMDI功能实际上已被弃用,Microsoft可能会在未来版本的VisualStudio中完全删除该功能

如果您想了解更多关于如何使用测试类别的信息,尤其是在自动构建过程中,请查看以下博客:


您还可以通过指定
,从运行中排除测试类别(感叹号)字符以进一步定义筛选器。

在Visual Studio 2012及更高版本中,您可以使用
测试用例筛选器设置配置生成定义

此设置是生成定义的一部分。 打开生成定义并导航到
流程
选项卡。在
3节中。测试
您可以定义多个测试源。对于每个测试源,您可以指定一个
测试用例过滤器

您可以在这篇MSDN文章中找到详细信息:

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

RC支持的操作员包括:

1.=(等于)

2.!=(不平等)

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

四,及(及)

5.|(或)

6.((分组用)

expression可以使用这些运算符作为任何有效的逻辑条件来创建(和)具有更高的 计算表达式时优先于|(或)

例如
“TestCategory=NAR |优先级=1” “所有者=vikram&TestCategory!=UI” “FullyQualifiedName~NameSpace.Class”
“(TestCategory!=UI&(Priority=1 | Priority=2))|(TestCategory=UI&Priority=1)”


另一种可能是在一个构建定义中有一些测试源,在其他构建定义中有一些(即更多或更少)测试源。

您的测试人员是什么?MSTest,NUnit,还有别的(?)我不知道这个功能。它打开了一个充满可能性的新世界。谢谢有关如何使用TFS2008TeamBuilds执行此操作的samle构建配置,请参阅下面的文章。对于TFS 2010,构建定义基于工作流,但其原理与there.FYI相同-已弃用“测试列表”方法(使用.VSMDI)文件,不建议再使用。相反,您应该使用MSTest的测试类别功能。Microsoft可能会在未来版本的Visual Studio中完全删除测试列表功能。如果您感兴趣,我这里有更多信息:在我的CI构建中,我使用“!Integration&!Load”运行