我需要为纸牌游戏编写测试用例。我被困在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>
。
答案 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行),并查看生成的单元测试。