【发布时间】:2021-01-30 14:57:41
【问题描述】:
所以我正在练习单元测试 (Xunit) 和 C#。我正在制作一个扑克游戏机应用程序。我有一个包含 52 张卡片的卡片组。该列表由 Card 类组成,每张牌都有一个 int 值,表示它是什么牌,例如值 1 是王牌,值 13 是国王。 我如何进行单元测试来检查 52 张卡的列表是否每个值都有 4 个?我只是为了练习而做的,想不出一个不太复杂的单元测试。
这里的卡片类非常简单:
public class Card
{
public enum Suit
{
HEART = 1,
SPADE,
CLUB,
DIAMOND
}
public int value { get; set; }
public int suit { get; set; }
public char letter { get; set; }
}
CreateDeck() 方法创建并返回卡片组:
public class CardDeck
{
public static List<Card> CreateDeck()
{
List<Card> cardDeck = new List<Card>();
int maxCards = 52;
int currentCardValue = 1;
int currentSuitValue = 1;
for (int i = 0; i < maxCards; i++)
{
cardDeck.Add(new Card { value = currentCardValue, suit = currentSuitValue, letter = Card.ReturnLetter(currentCardValue) });
currentSuitValue++;
if (currentSuitValue > 4) { currentSuitValue = 1; }
//After 4 cards of the same value we raise the cards value
if(i + 1 % 4 == 0)
{
currentCardValue++;
}
}
return cardDeck;
}
}
所以我想做一个 Xunit 测试:
[Fact]
public void CardDeck_ShouldHave4CardsOfEachValue()
{
List<Card> cardDeck = CardDeck.CreateDeck();
??????
}
【问题讨论】:
-
var ok = !cardDeck.GroupBy( x => x.value).Any( g => g.Count != 4);
标签: c# unit-testing xunit