gpt4 book ai didi

c# - 为未暴露给 UI 的方法编写测试 - 需要一般帮助

转载 作者:行者123 更新时间:2023-11-30 12:49:52 26 4
gpt4 key购买 nike

我是 TDD 的新手,我正在使用 NUnit 以 C# 编写的纸牌游戏应用程序编写测试。

主要证明它确实有用,但有些东西我想测试,但不希望公开任何公共(public)属性。

例如,我希望能够测试一副新牌是否包含 4 套花色,每套有 13 张牌。它可能看起来像:

[Test()]
public void ADeckOfCardsHas4Suits()
{
Game game = new Game();
Assert.AreEqual(4, game.Deck.SuitCount);
Assert.AreEqual(13, game.Deck.GetCards(Suit.Spades).Count)
}

随着 SuitCount 返回类似的东西:

return this.cards.Select(c => c.Suit).Distinct().Count();

和GetCards(西装套装):

return this.cards.where(c => c.Suit == suit);

但是我不想将 API 中的这些属性或方法公开给 UI(我什至可能不希望公开 Deck),但我不确定如何在不公开它们的情况下对它们进行测试。

是否有任何公认的方法可以做到这一点?

干杯

斯图尔特

最佳答案

在这种情况下,我们经常使用(滥用?)友元程序集来让测试项目看到被测类的内部成员。

编辑:

在您的主项目中添加一个 FriendAssemblies.cs 文件:

using System.Runtime.CompilerServices;

// making internals available to the testing project
[assembly: InternalsVisibleTo( "MyProject.IntegrationTests" )]
[assembly: InternalsVisibleTo( "MyProject.UnitTests" )]

关于c# - 为未暴露给 UI 的方法编写测试 - 需要一般帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com