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

Testing 如何在dotnet测试上运行过滤器,testing,code-coverage,xunit.net,azure-pipelines-build-task,reportgenerator,Testing,Code Coverage,Xunit.net,Azure Pipelines Build Task,Reportgenerator,我有一个内置的VST,如下所示: 您可以从屏幕截图中看到“测试并生成代码覆盖率”的测试步骤。它使用以下命令: /p:CollectCoverage=true/p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)\TestResults\Coverage\Coverage 它允许生成代码覆盖率报告。我已经用我定义的特性(如集成或单元)将“类别”添加到我的xUnit测试中,以允许我在构建/发布期间过

我有一个内置的VST,如下所示:

您可以从屏幕截图中看到“测试并生成代码覆盖率”的测试步骤。它使用以下命令:

/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") { }
    }
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用Xunit.抽象;
使用Xunit.Sdk;
/// 
///将测试装饰为单元测试,以便它在连续集成构建中运行。
/// 
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
公共密封类IsUnitAttribute:AICategoryAttribute
{
/// 
///初始化的新实例
/// 
public IsUnitAttribute():基(“单位”){}
}
/// 
///将测试装饰为集成测试,以便它在连续集成构建中运行。
/// 
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
公共密封类集成属性:AICategoryAttribute
{
/// 
///初始化的新实例
/// 
公共IsIntegrationAttribute():基(“集成”){}
}
我只知道如何在VS测试步骤中应用过滤器,如下所示:

但当我使用dotnet进行测试时,情况并非如此:

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

a) 将命令添加到VS测试以生成代码覆盖率,与我使用上面的命令对dotnet所做的相同

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


非常感谢任何指点

没有针对dotnet测试步骤的
测试筛选条件
。但是,您可以尝试使用命令行中的参数
--filter
运行dotnet测试

请看

使用给定表达式筛选出当前项目中的测试。 有关详细信息,请参见“过滤器选项详细信息”部分。更多 有关如何使用选择性单元测试筛选的信息和示例, 看


dotnet测试步骤没有
测试筛选条件
字段。但是,您可以尝试使用命令行中的参数
--filter
运行dotnet测试

请看

使用给定表达式筛选出当前项目中的测试。 有关详细信息,请参见“过滤器选项详细信息”部分。更多 有关如何使用选择性单元测试筛选的信息和示例, 看


使用命令--filter似乎可以工作,但是当我尝试在VSTest(filter=Unit)中工作的命令时,它找不到我的单元测试:-\n知道为什么会这样吗?--filter后面的命令是否应该不同于“=Unit”?我也试过“=IsUnit”,但没有什么乐趣。@RobMcCabe好吧,它们有不同的语法,请参阅for dotnet test。下面是一个在dotnet测试中使用
--filter
的示例供您参考:对于其他想要在Xunit中对Category name进行筛选的人,这是一个对我有效的参数:--filter“Category=Unit”使用命令--filter似乎可以工作,但当我尝试在VSTest(filter=Unit)中工作的命令时,它找不到我的单元测试:-\n知道为什么会这样吗?--filter后面的命令是否应该不同于“=Unit”?我也试过“=IsUnit”,但没有什么乐趣。@RobMcCabe好吧,它们有不同的语法,请参阅for dotnet test。这里有一个例子,可以使用dotnet测试中的
--filter
作为参考:对于任何想在Xunit中对Category name进行筛选的人来说,这是一个对我有效的参数:--filter“Category=Unit”