【问题标题】:JUnit testing a void method?JUnit测试一个void方法?
【发布时间】:2019-04-17 21:09:42
【问题描述】:

我有一个名为 dealDeck() 的公共静态 void 方法,它从一个名为 deck 的 ArrayList 中获取对象,并根据它们在列表中的位置将它们分离并放置到 4 个不同的 ArrayList 中。是否有 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));
        }
    }
}   

可以或应该测试这种方法吗?

【问题讨论】:

    标签: java junit


    【解决方案1】:

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

    为了更有帮助:我只是在player*HandObjects 上做出断言。 (我不打算评论您可能应该为您的方法设置 hands 参数的事实,以便它可以在全球范围内更广泛地使用)。像下面这样的东西应该可以工作(有些方法没有写,但我希望你能从名字中猜出它们的作用):

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

    我假设我们在这里讨论的是普通纸牌,但只要你能断言交易应该在套牌处于初始化状态时做了什么,那应该没问题对于您正在处理的任何类型的“套牌”和“手牌”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-15
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多