繁体   English   中英

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

[英]How do I use JUnit to test the getter and setter methods of an ArrayList?

我需要为Card游戏编写测试用例。 我坚持使用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>

如果你测试setter和getter,我会很快谈谈你。 我完全相信这取决于你,如果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());
}

我已将测试集合并将方法合并到一个测试中。 这可以被认为是错误的,因为单元测试应该测试代码的最小部分。 但是,在这种情况下,它使测试代码更清晰。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM