单元测试自定义属性类

时间:2011-07-12 18:01:46

标签: c# unit-testing attributes mocking

我有custom attribute仅用于标记成员(不是constructor,没有properties):

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

我如何对此进行单元测试?而且,澄清......我知道'什么',但不知道'怎么'

我认为有一种方法可以对其进行单元测试,以确保适当的AttributeUsage到位?那怎么能这样呢?每次我创建一个mock类并尝试将属性添加到错误的东西时它都不会让我编译,所以如何创建一个错误的模拟类来测试呢?

1 个答案:

答案 0 :(得分:11)

你不会创建一个模拟类来测试它。相反,您只需测试属性类本身,看它是否具有正确的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.