c# - 如何测试通过公共(public)方法修改的私有(private)字段

标签 c# .net unit-testing

任何人都可以指导我测试通过公共(public)方法修改的类中的私有(private)字段的建议方法。我读过很多人的评论,建议不建议测试私有(private)成员,因为它们在实现内部,但是这种情况似乎与大多数其他答案不同。

我正在考虑保护私有(private)字段并创建一个公开该字段的测试子类,但如果我无法修改该类的内部结构怎么办?

在下面的示例代码中,要测试的私有(private)成员是 _values,它是一个只写集合,通过 AddValue() 接收新值。

public class Sample
{

    private Dictionary<string, string> _values;
    private DateTime _created;

    public Sample()
    {
        _values = new Dictionary<string, string>();
        _created = DateTime.Now;
    }

    public void AddValue(string key, string value)
    {
        _values.Add(key, value);
    }
}

最佳答案

您仍然不需要测试您的私有(private)变量。你测试你的接口(interface)。在这种情况下,我可能会添加一个 Count 属性并将其用于某些测试(或类似的东西)

关于c# - 如何测试通过公共(public)方法修改的私有(private)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3375997/

相关文章:

c# - 如何将程序集加载到具有不同目标框架的单独应用程序域中?

c# - 在 Windows 10 移动版上启动画面矩形坐标返回屏幕尺寸

asp.net - asp.net中Literal控件的Mode属性

c# - 不支持 MongoDB 序列化 ()

安卓单元测试 : How to mock Android's context

c# - Xamarin.Forms PCL javax.net.ssl.SSLHandshakeException

c# - 如何更改 ASP.NET Core API 中的默认 Controller 和操作?

c# - 无法使用 nhibernate 插入到表中

c# - 我应该如何测试从 DataReader 填充列表的方法?

mongodb - 返回 Mongoose promise 的单元测试函数