如何使用JUnit测试ArrayList的getter和setter方法?

时间:2019-04-17 19:21:38

标签: java arraylist junit

我需要为纸牌游戏编写测试用例。我被困在arrayList的getter和setter方法上。 arrayList持有玩家手牌,并拿下另一个类别的物体。

Card Class  // Describes the cards
Card(int suit, int rank, boolean ID, int points):

// The cards are fractions instead of traditional cards

// Card(0, 0, true(isDouble), 0(extra point)) card looks like 0/0 

Deck Class  // creates cards and hands
static ArrayList<Card> playerFour = new ArrayList<Card>();

public static ArrayList<Card> getPlayerFour() {
    return playerFour;
}

public static void setPlayerFour(ArrayList<Card> playerFour) {
    Deck.playerFour = playerFour;
}

@Test 
void testGetPlayerFour() {
    // Can't figure out
}

@Test
void testSetPlayerFour(){
    // Can't figure out
}


// Some of what I tried
@Test
void testGetPlayerFour() {
    Deck deck = new Deck();
    ArrayList<Card> playerFour = new ArrayList<Card>();
    playerFour.add(new Card(0, 0, false, 0));
    assertEquals(00, deck.getPlayerFour());
}

@Test
void testSetPlayerFour() {
    Deck deck = new Deck();
    deck.setPlayerFour(new Card(0, 0, false, 0);
    assertEquals(00, deck.getPlayerFour());
}

我不确定是否需要@Before@After来首先在测试中启动ArrayList。我可以找到的所有阅读材料和示例都使用ArrayList<String or Integer>

1 个答案:

答案 0 :(得分:0)

我将快速讨论您是否应该测试设置器和获取器。我完全相信这取决于您,如果setter和getter内部的功能对您的产品很重要,那么可以为它们编写单元测试。

因此,在决定要测试这些方法之后,您可以尝试执行以下操作:

@Test
void testSetGetPlayerFour() {
  // Arrange
  Deck deck = new Deck();
  ArrayList<Card> myCards = new ArrayList<Card>();
  Card myCard = new Card(); // You will need to create a valid card here
  myCards.add(myCard);

  // Act
  deck.setPlayerFour(myCards);

  // Assert
  assertEquals(myCards, deck.getPlayerFour());
}

我已经将set和get方法的测试合并到一个测试中。这可能被认为是不好的,因为单元测试应该测试代码的最小部分。但是,在这种情况下,它会使测试代码更简洁。

在Diffblue(我工作的公司),我们有unit test generation tool的免费试用版。使用此工具,您可以将一些代码放入(最多200行),并查看生成的单元测试。