我是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依赖关系吗?有没有办法可以使用嘲弄解决问题? 或者您将如何解决这个问题?
答案 0 :(得分:4)
单元测试中的单元不必是单独的方法。根据{{3}}进行思考更有用。合同可以是给定某些参数的函数应返回某个值,但通常它们更复杂。
例如,在调用insertFirst
之后可能会签订一份合同:
getFirst
返回您插入的对象size
返回旧尺寸加一toString
的输出包括插入的对象这些将被称为合同的后置条件。合同也可能有前提条件:例如,如果列表为空,则remove
应该抛出异常。
当合同需要与外部实体交互时,模拟对象变得有用。情况并非如此。