gpt4 book ai didi

C#:使用私有(private)静态成员进行单元测试?

转载 作者:可可西里 更新时间:2023-11-01 08:55:23 25 4
gpt4 key购买 nike

我有一个类的结构是这样的:

private static Dictionary<Contract, IPriceHistoryManager> _historyManagers = new Dictionary<Contract, IPriceHistoryManager>();

让我们说 2 种方法:

 public void AddSth()
{
_historManagers.Add(new Contract(), new PriceHistoryManager());
}

public int CountDic()
{
return _historyManagers.Count();
}

问题:当运行单元测试时,没有办法“重置”字典,当我用类的单独实例创建多个单元测试时,“CountDic”会给出不可预测的结果,我无法测试监听。

问题:这通常被认为是一种“坏”方法吗?如果是:如何做得更好/更可单元测试?如果不是:如何最好地进行单元测试?

谢谢。

最佳答案

不要害怕为了测试目的公开公共(public)操作。摘自 Roy Osherove 的“单元测试的艺术”:当丰田制造汽车时,有可用的测试点。当英特尔构建芯片时,有可用的测试点。存在仅用于测试的汽车或芯片接口(interface)。为什么我们不对软件做同样的事情? ResetHistory() 方法会完全破坏您的 API 吗?

如果答案是,则创建该方法,但将方法设为内部。然后,您可以使用程序集 InternalsVisibleTo 向您的单元测试库公开内容。您有一个方法可供您创建 100% 用于测试,但您的公共(public) API 没有变化。

关于C#:使用私有(private)静态成员进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com