当前位置:  开发笔记 > 编程语言 > 正文

如何在单元测试期间设置数据结构的内部状态?

如何解决《如何在单元测试期间设置数据结构的内部状态?》经验,为你挑选了1个好方法。

我正在用C#编写一个数据结构(一个使用斐波那契堆的优先级队列),我正在尝试将它作为TDD的学习经验,我很陌生.

我知道每个测试应该只测试一个类的一个部分,以便一个单元中的故障不会让我混淆多个测试失败,但是我不确定当数据结构的状态对于一个测试.

例如,

private PriorityQueue queue;

[SetUp]
public void Initialize()
{
    this.queue = new PriorityQueue();       
}

[Test]
public void PeekShouldReturnMinimumItem()
{
    this.queue.Enqueue(2);
    this.queue.Enqueue(1);

    Assert.That(this.queue.Peek(), Is.EqualTo(1));
}

如果其中一个EnqueuePeek破坏,该测试将会中断.

我想我可以以某种方式让测试手动设置底层数据结构的堆,但我不知道如何在不将实现暴露给世界的情况下做到这一点.

有一个更好的方法吗?依赖其他部分好吗?

我有一个SetUp到位,只是为了简单而离开了它.



1> tvanfosson..:

为您的测试项目添加该类的私有访问器.使用访问器以某种已知方式设置类的私有属性,而不是使用classes方法来执行此操作.

您还需要在测试类上使用SetUpTearDown方法来执行测试之间所需的任何初始化.我实际上更喜欢在每个测试中重新创建队列,而不是在测试之间重用它以减少测试用例之间的耦合.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有