加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中测试/注入私有字段的好习惯是什么?

发布时间:2020-12-16 00:20:49 所属栏目:百科 来源:网络整理
导读:如果这个重复,我道歉.我被赋予了为该方法添加一些覆盖的任务,并被告知要模拟私有List string属性.我的问题是:有没有办法测试私有字段? 我找到的解决方案是添加新的构造函数只是为了注入这个私有列表.我不确定这是否正确,所以任何帮助都将受到高度赞赏. pub
如果这个重复,我道歉.我被赋予了为该方法添加一些覆盖的任务,并被告知要模拟私有List< string>属性.我的问题是:有没有办法测试私有字段?

我找到的解决方案是添加新的构造函数只是为了注入这个私有列表.我不确定这是否正确,所以任何帮助都将受到高度赞赏.

public class Class1
{
    public Class1(List<string> list)//This is just for Unit Testing 
    {
        list1 = list;
    }


    private readonly InjectRepository _repository;
    //
    public Class1(InjectRepository repository)//This is the actual constructor
    {
        _repository = repository;
    }

    private List<string> list1 = new List<string>();

    public void Do_Complex_Logic()
    {
       //list1 will be set with items in it
       //Now list1 is passed to some other instance
    }
}

解决方法

类的私有逻辑应该在其行为的公共表达中可见.换句话说,理论上说,根本不需要测试私有字段.

无法直接测试私有字段;毕竟他们是私人的.如果您真的认为需要测试私有字段,那么我建议将其改为内部,并通过[InternalsVisibleTo]属性将其公开给您的单元测试程序集.

话虽如此,有些框架允许这样的事情,例如TypeMock.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读