测试getCards方法testGetCards1测试用例判断返回长度是否正确;
public void testGetCards1() throws Throwable
{
Deck deck=new Deck();
deck.addDeck(1);
Vector deckcard=deck.getCards();
assertEquals(52,deckcard.size());
}
testGetCards2测试用例从返回的结果中取任意值判断内容是否正确;
public void testGetCards2() throws Throwable
{
Deck deck=new Deck();
deck.addDeck(1);
Vector deckcard=deck.getCards();
Card card=(Card) deckcard.elementAt(1);
String RET=card.toString();
assertEquals("2H",RET);
}
测试shuffle方法testShuffle1用例测试在未增加牌时shuffle方法是否会出错;
public void testShuffle1() throws Throwable
{
Deck deck=new Deck();
deck.shuffle();
Vector RET=deck.getCards();
assertEquals(0, RET.size());
}
testShuffle2用例测试洗牌后纸牌的内容有没有丢失或改变;代码中使用了穷举的方法,验证每一张牌是否真实存在。是否有更好的测试方法呢?
public void testShuffle2() throws Throwable
{
Deck deck=new Deck();
Deck deck2=new Deck();
deck.addDeck( 1);
deck2.addDeck( 1);
Vector carddeck= deck.getCards();
Vector carddeck2= deck2.getCards();
deck.shuffle();
Card card,card2;
boolean RET;
for(int j=0;j<52;j++){
card=(Card) carddeck.elementAt( j);
RET=false;
for(int i=0;i<52;i++){
card2=(Card) carddeck2.elementAt(i);
if(card2.toString().equals( card.toString()))
RET=true;
}
assertEquals(true,RET);
}
}
testShuffle3用例测试洗牌后牌的数量是否错误。
public void testShuffle3() throws Throwable
{
Deck deck=new Deck();
deck.addDeck( 1);
deck.shuffle();
Vector RET=deck.getCards();
assertEquals(52, RET.size());
}
注:由于在源代码中已经注明只使用一幅牌,所以测试过程中未考虑牌多于一幅的情况;
思考问题:
是否考虑异常情况?在本次的例子中,当不增加纸牌而取某一张牌时会出现错误,但是否有必要进行这种测试?
在getCard方法中如果测试者不知道Card类如何使用,那么将无法对测试结果进行判断。当设计文档编写的不够细致时会不会对白盒测试阻碍,这个阻碍会有多大呢?
测试shuffle方法是否有更好的方法呢?类似这种情况在实际应用中可能会很多,有时可能无法使用穷举、边界值、分类等方法来进行测试,这时应该如何进行测试呢?
由于测试代码的增多,提高了错误存在于测试代码中的风险,这时应该如何处理呢?
考虑testBurnIt1测试,当toString方法改变时,可能会引起testBurnIt1测试失败,这样会增加测试代码的维护难度,应该如何解决这一问题呢?