对自定义属性类进行单元测试

本文关键字:单元测试 自定义属性 | 更新日期: 2023-09-27 18:01:48

我有一个custom attribute,只是用来标记成员(没有constructor,没有properties):

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
public sealed class MyCustomAttribute : Attribute { }

我该如何进行单元测试呢?澄清一下……我知道"是什么",但不知道"怎么做"

我假设有一种方法来单元测试它,以确保适当的AttributeUsage到位?我该怎么做呢?每次我创建一个模拟类并尝试将属性添加到错误的东西时,它都不允许我编译,那么我如何创建一个糟糕的模拟类来进行测试呢?

对自定义属性类进行单元测试

您不需要创建模拟类来测试这一点。相反,您只需测试属性类本身,看看它是否具有正确的AttributeUsageAttribute属性。哇,好一口

[TestMethod]
public void Is_Attribute_Multiple_False()
{
    var attributes = (IList<AttributeUsageAttribute>)typeof(MyCustomAttribute).GetCustomAttributes(typeof(AttributeUsageAttribute), false);
    Assert.AreEqual(1, attributes.Count);
    var attribute = attributes[0];
    Assert.IsFalse(attribute.AllowMultiple);
}
// Etc.