我们所有的测试都通过了,而且我们没有看到任何重复或者其他必要的重整,所以应该是时候进行下面的测试了。然而事实却不是这样的。我们top和remove方法的实现里有一个潜在的问题。如果对一个空的Deck调用它们,会发生什么?这两个方法都会从纸牌的内部列表里跳出一个IndexOutOfBoundsException异常,但是目前我们还没有就这个问题进行沟通。回头看看简单性的原则,我们知道自己需要沟通。我们的类的用户应该知道这个潜在的问题。幸运的是,我们将这种测试当作是一种沟通的方式,因此我们增加了下面的测试。
public void testTopOnEmptyDeck()
{
Deck deck = new Deck();
try
{
deck.top();
fail("IllegalStateException not thrown");
}
catch(IllegalStateException e)
{
assertEquals("Cannot call top on an empty deck", e.getMessage());
}
}
public void testRemoveOnEmptyDeck()
{
Deck deck = new Deck();
try
{
deck.remove();
fail("IllegalStateException not thrown");
}
catch(IllegalStateException e)
{
assertEquals("Cannot call remove on an empty deck", e.getMessage());
}
}
文章来源于领测软件测试网 https://www.ltesting.net/