JUnit 测试一种无效方法



我有一个名为dealDeck((的公共静态void方法,它从名为deck的ArrayList中获取对象,并根据它们在列表中的位置将它们分离并放入4个不同的ArrayLists中。是否有 JUnit 测试来检查该方法是否按计划运行?

public static void dealDeck() {
    for (int i=0; i<28; i++) {
        if (i%4 == 0){
            playerOneHand.add(deck.get(i));
        }
        else if (i%4 == 1) {
            playerTwoHand.add(deck.get(i));
        }
        else if (i%4 == 2) {
            playerThreeHand.add(deck.get(i));
        }
        else if (i%4 == 3) {
            playerFourHand.add(deck.get(i));
        }
    }
}   

可以或应该测试此方法吗?

是的,它可以,是的,它应该...

不过为了更有用:我只是在player*Hand Object上做出断言。 (我不打算评论这样一个事实,即您可能应该为您的方法制作手参数,以便它可以更全局地使用(。 像下面这样的东西应该可以工作(有些方法没有编写,但我希望你能从名称中猜出它们的作用(:

@Test
public void testHandsAreAsExpected() {
    player*Hand.clear();
    initialiseDeckInSuitRotationOrder(); // Heart, Diamond, Club, Spade, ...
    DeckDealer.dealDeck();
    checkHandAllOfSuit(player1Hand, Suits.HEARTS);
    // Repeat for other hands
}

我假设我们在这里谈论的是普通的扑克牌,但只要你能断言交易应该在初始化状态下对牌组做什么,这对你正在处理的任何类型的"牌组"和"手牌"来说都应该没问题。

最新更新