【发布时间】:2013-02-05 11:38:15
【问题描述】:
我正在尝试了解有关 JUnit 和 TDD 的更多信息,但我遇到了一些测试用例之间耦合的问题。
当我为特定数据类型的 API 编写测试用例时,比如Deque<T>,我如何限制测试用例之间的耦合?例如,如果我正在为方法 insertFirst(T item) 编写一个测试用例,那么在正确初始化的对象上调用该方法后,我应该能够断言两件事似乎很简单:
-
Deque对象的大小应该增加一 - 如果我随后调用相应的
T removeFirst()方法,它应该返回对我在初始调用中插入的对象的引用。
但是,这会在我的至少两个测试用例之间产生不希望的耦合,其中一个测试用例的通过取决于另一个 API 方法的正确实现。例如,为了让这个测试用例通过,我需要一个正确的实现来检查Deque 中的项目数以及删除项目。如果我对这些方法中的任何一个的测试由于某种原因不正确或不完整,那么我对insertFirst 方法的测试将自动受到怀疑。
避免这种情况的最佳做法是什么?我编写测试用例的方法在某种程度上是错误的吗?
【问题讨论】:
标签: java unit-testing testing junit tdd