问题描述
使用 Xunit
时,我希望能够放置属性 [UnitTest]
和 [IntegrationTest]
而不是 [Trait("Category","Unit")]
和 [Trait("Category","Integration")]
。
用法如下:
[Fact]
[UnitTest]
public async Task TestGetAreasForCompany()
{
// Test code
}
[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 提供了一种创建您自己的类别属性的方法。