如何在dotnet测试上运行过滤器

时间:2018-08-29 14:27:50

标签: testing code-coverage xunit.net azure-pipelines-build-task reportgenerator

我在VSTS中有一个构建,如下所示:

enter image description here

您可以从屏幕快照中看到一个测试步骤,即“测试并生成代码覆盖率”。它使用以下命令:

  

/ p:CollectCoverage = true / p:CoverletOutputFormat = cobertura   / p:CoverletOutput = $(Build.SourcesDirectory)\ TestResults \ Coverage \ coverage

这允许生成代码覆盖率报告。我已经使用定义的特性(例如集成或单元)向我的xUnit测试中添加了“类别”,以允许我在构建/发布期间过滤测试。例如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Xunit.Abstractions;
    using Xunit.Sdk;

    /// <summary>
    /// Decorates a test as a Unit Test, so that it runs in Continuous Integration builds.
    /// </summary>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
    public sealed class IsUnitAttribute : AICategoryAttribute
    {
        /// <summary>
        /// Initializes a new instance of <see cref="IsUnitAttribute"/>
        /// </summary>
        public IsUnitAttribute() : base("Unit") { }
    }

    /// <summary>
    /// Decorates a test as an Integration Test, so that it runs in Continuous Integration builds.
    /// </summary>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
    public sealed class IsIntegrationAttribute : AICategoryAttribute
    {
        /// <summary>
        /// Initializes a new instance of <see cref="IsIntegrationAttribute"/>
        /// </summary>
        public IsIntegrationAttribute() : base("Integration") { }
    }

我只知道如何在VS-Test步骤中应用过滤器,如下所示:

但是当我使用dotnet进行测试时不会:

enter image description here

我只知道如何使用dotnet(而不是VS-Test)来构建代码覆盖范围……我想两者都做!我如何:

a)将命令添加到VS-Test以生成代码覆盖率,这与使用上述命令对dotnet所做的相同。

OR

b)将过滤器应用于dotnet测试步骤?

任何指针都很感激!

1 个答案:

答案 0 :(得分:2)

没有提交Test Filter criteria用于dotnet测试步骤。但是,您可以尝试在命令行中使用参数--filter运行dotnet测试。

请参阅Filter option details

  

使用给定的表达式过滤掉当前项目中的测试。   有关更多信息,请参见过滤器选项详细信息部分。欲了解更多   有关如何使用选择性单元测试过滤的信息和示例,   参见Running selective unit tests