微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我是TDD的新手,并且正在使用NUnit以C#编写的Card Game应用程序的测试.

它的证明大多非常有用,但有一些我想测试的东西,但不希望公开任何公共属性.

例如,我希望能够测试一个新的卡片组由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" )]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐