我正在用 C# 编写一个数据结构(使用斐波那契堆的优先级队列),我试图将它用作我对 TDD 很陌生的学习经验。
我知道每个测试应该只测试一个类,这样一个单元的失败不会让我与多个测试失败混淆,但是当数据结构的状态很重要时,我不确定如何做到这一点一个测试。
例如,
private PriorityQueue<int> queue;
[SetUp]
public void Initialize()
{
this.queue = new PriorityQueue<int>();
}
[Test]
public void PeekShouldReturnMinimumItem()
{
this.queue.Enqueue(2);
this.queue.Enqueue(1);
Assert.That(this.queue.Peek(), Is.EqualTo(1));
}
如果其中一个Enqueue
或Peek
坏了,这个测试就会失败。
我在想我可以以某种方式让测试手动设置底层数据结构的堆,但我不确定如何在不向世界公开实现的情况下做到这一点。
有一个更好的方法吗?依赖其他部分好吗?
我有一个SetUp
地方,只是为了简单起见。