我們所有的測試都通過了,而且我們沒有看到任何重復或者其他必要的重整,所以應該是時候進行下面的測試了。然而事實卻不是這樣的。我們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());
}
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/