其中两个类属性具有以下注释:
[Key]
[Column]
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[MaxLength(25)]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
我知道测试Key,Column和Required属性不再是单元测试,它是一个集成测试,因为它依赖于底层数据库,但是你如何测试MaxLength(25)属性呢?
我能想到的其中一个替代方案是在属性中添加代码契约.
更新
正如所建议的那样,我写了以下帮助:
public class AttributeHelper <T> where T : class
{
private Type GivenClass
{
get { return typeof (T); }
}
public bool HasAnnotation(Type annotation)
{
return GivenClass.GetCustomAttributes(annotation, true).Single() != null;
}
public bool MethodHasAttribute(Type attribute, string target)
{
return GivenClass.GetMethod(target).GetCustomAttributes(attribute, true).Count() == 1;
}
public bool PropertyHasAttribute(Type attribute, string target)
{
return GivenClass.GetProperty(target).GetCustomAttributes(attribute, true).Count() == 1; …Run Code Online (Sandbox Code Playgroud)