如何使用JUnit对链表进行单元测试

时间:2016-03-06 10:41:57

标签: java junit tdd

我是TDD的忠实粉丝,在编写代码之前,我经常为大学作业编写测试用例。所以这是我的任务界面:

public interface SinglyLinkedList<E> {
    public void insertFirst(E e);
    public void insertAfter(E e, int index);
    public void removeFirst();
    public void remove(int index);
    public void removeAll();
    public E getFirst();
    public E get(int index);
    public int size();
    public String toString();
}

我编写了整个测试用例,但感觉就像编写了错误的测试代码。我找不到一种方法来编写我的测试方法原子。胃内我不能在不使用size()的情况下测试remove()。或者我找不到一种方法来测试insertFirst()而不调用get()之后。 据我所知,没有办法标记testmethods依赖关系吗?有没有办法可以使用嘲弄解决问题? 或者您将如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

单元测试中的单元不必是单独的方法。根据{{​​3}}进行思考更有用。合同可以是给定某些参数的函数应返回某个值,但通常它们更复杂。

例如,在调用insertFirst之后可能会签订一份合同:

  • getFirst返回您插入的对象
  • size返回旧尺寸加一
  • toString的输出包括插入的对象

这些将被称为合同的后置条件。合同也可能有前提条件:例如,如果列表为空,则remove应该抛出异常。

当合同需要与外部实体交互时,模拟对象变得有用。情况并非如此。