カードゲームを実装しましたが、シャッフルメソッドをテストする必要があります。netbeans 7.2を使用していますが、instance.shuffleDeckメソッドを呼び出した後、deckBeforeShuffleが空であるため、問題が発生しています。そのため、deckAfterShuffle配列と比較して、シャッフルされているかどうかを確認できません。私がJUnitを使用するのは初めてで、これを修正するためにさまざまな方法を試しましたが、すべて無駄でした。
@Test
public void testShuffleDeck() {
System.out.println("shuffleDeck");
CardDeck instance = new CardDeck(1);
ArrayList<Card> deckBeforeShuffle = instance.getDeck();
instance.shuffleDeck();
ArrayList<Card> deckAfterShuffle = instance.getDeck();
boolean isShuffled = false;
int position = 0;
System.out.println(deckBeforeShuffle.size());
while(position<deckBeforeShuffle.size() && !isShuffled){
if(deckBeforeShuffle.get(position).getSuitValue() != deckAfterShuffle.get(position).getSuitValue() && deckBeforeShuffle.get(position).getvalue() != deckAfterShuffle.get(position).getvalue()){
isShuffled = true;
}
position++;
}
assertEquals(true, isShuffled);
}
私のシャッフル方法!
public void shuffleDeck(){
ArrayList<Card> temp = new ArrayList();
Random rand = new Random();
int position;
while(deck.size() > 0){
position = rand.nextInt(deck.size());
temp.add(deck.remove(position));
}
deck = temp;
}
助けてくれてありがとう!