将属性包裹在自定义属性中

问题描述

使用 Xunit 时,我希望能够放置属性 [UnitTest][IntegrationTest] 而不是 [Trait("Category","Unit")][Trait("Category","Integration")]

用法如下:

[Fact]
[UnitTest]
public async Task TestGetAreasForCompany()
{
  // Test code
}

我创建了 2 个自定义属性,但不知道如何使用它们。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,AllowMultiple = true)]
[Trait("Category","Integration")]
public class IntegrationTestAttribute : Attribute
{
    public IntegrationTestAttribute()
    {
    }
}

以上不起作用。特征未被拾取。

Xunits 实现如下:

using System;
using Xunit.Sdk;

namespace Xunit
{
    /// <summary>
    /// Attribute used to decorate a test method with arbitrary name/value pairs ("traits").
    /// </summary>
    [Traitdiscoverer("Xunit.Sdk.Traitdiscoverer","xunit.core")]
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,AllowMultiple = true)]
    public sealed class TraitAttribute : Attribute,ITraitAttribute
    {
        /// <summary>
        /// Creates a new instance of the <see cref="T:Xunit.TraitAttribute" /> class.
        /// </summary>
        /// <param name="name">The trait name</param>
        /// <param name="value">The trait value</param> 
        public TraitAttribute(string name,string value)
        {
        }
    }
}

解决方法

我确实使用 this article 解决了这个问题,因为 Xunit 提供了一种创建您自己的类别属性的方法。