相关疑难解决方法(0)

您如何对数据注释进行单元测试?

其中两个类属性具有以下注释:

    [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)

c# tdd unit-testing data-annotations

5
推荐指数
1
解决办法
3231
查看次数

标签 统计

c# ×1

data-annotations ×1

tdd ×1

unit-testing ×1