如何 运行 过滤 dotnet 测试

How to run filters on dotnet tests

我在VSTS中有一个build,如下:

您可以从屏幕截图中看到 "Test and generate code coverage" 的测试步骤。它使用这个命令:

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

允许生成代码覆盖率报告。我已经使用我定义的特征(例如集成或单元)将 "Categories" 添加到我的 xUnit 测试中,以允许我在 build/release 期间过滤测试。例如:

    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 进行测试时不是:

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

a) 将命令添加到 VS-Test 以生成代码覆盖率,就像我使用上面的命令对 dotnet 所做的一样。

b) 将筛选器应用于 dotnet 测试步骤?

非常感谢任何指点!

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

请看Filter option details

Filters out tests in the current project using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see Running selective unit tests.