c# – 为未暴露于UI的方法编写测试 – 需要一般帮助
发布时间:2020-12-15 21:33:49 所属栏目:百科 来源:网络整理
导读:我是TDD的新手,并且正在使用NUnit以C#编写的Card Game应用程序的测试. 它的证明大多非常有用,但有一些我想测试的东西,但不希望公开任何公共属性. 例如,我希望能够测试一个新的卡片组由4个套装组成,每套套装有13张卡片.它可能看起来像: [Test()]public void
我是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" )] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |