于是我沿着这我应该如何测试访问私有成员的公共方法
private List<ConcurrentQueue<int>> listOfQueues = new List<ConcurrentQueue<int>>()
public void InsertInt(int id, int value)
{
listOfQueues[id].Enqueue(value);
}
线的东西这是不是我不应该是单元测试?
如果是我如何测试InsertInt方法而不使用任何其他方法? 是否可以使用该方法从队列中检索数据以测试它是否正确输入? 这是我应该使用模拟的东西吗?
所以它更好在一个单元测试中测试多个东西,而不是将单元测试与实现联系起来? – scott 2011-06-03 13:05:41
是的,我相信是这样,因为它模仿了真实世界中如何使用这个类。如果你独立地测试这两种方法,你就没有一个单元测试来确保输入和输出方法实际上在一起工作,这只是一个假设。然后,您可以更改其中一个的实现(和测试),而您的单元测试将通过,但代码将在生产中失败。你仍然需要进行单元测试,如果你用x参数调用输入方法,你的输出会给你y个参数,因此私人测试是浪费时间和精力。 – KallDrexx 2011-06-03 13:12:19
此外,它仍然是单元测试,因为你的单元测试只处理一个类本身而不是在类之外,所以处理多种方法并不是一件坏事。 – KallDrexx 2011-06-03 13:13:14