在c#私有方法中正确测试接口[重复]
Posted
技术标签:
【中文标题】在c#私有方法中正确测试接口[重复]【英文标题】:Properly test interfaces in c# private methods [duplicate] 【发布时间】:2016-11-25 14:58:40 【问题描述】:我是 C# 新手。我确实有一些测试javascript的经验。我正在考虑评估这个测试,类似于检查通过 sinon 的间谍调用的方法。
但是,我不确定要测试什么。正如我所指出的,我对 c# 还很陌生,并且正在进行测试以了解代码的工作原理。
这是我需要测试的私有方法
private TicketResponse.PaymentType GetPaymentType(TicketResponse.FormOfPaymentCreditCard paymentType, VCR_DisplayRSTicketingInfosTicketingInfoTicketingTicketDataTourInfo tourInfo)
我读到我测试了接口。所以我正在测试这些方面的东西?
public enum PaymentType
CASH, CREDIT_CARD, NITP, TRAVEL_CREDIT, GIFT_CARD, JETBLUE_REWARDS, NONE, CHECK, EXCHANGE
任何见解都会非常有帮助,谢谢。
【问题讨论】:
普遍的共识是你的单元测试应该测试公共方法的预期行为;相关的私有方法将通过公共方法进行测试。 这是我的问题的更新。 ***.com/questions/38514315/…. 【参考方案1】:您不能测试私有方法,因为它在定义它的类之外是不可见的。
如果你希望你的方法是可测试的,它必须是公开的或者有一个公开的包装器。
私有方法通常通过对调用它们的公共方法的测试来间接测试。
【讨论】:
【参考方案2】:通常的测试方法是只测试你的类的public接口。测试私有方法通常会创建脆弱的测试,并且不一定会测试其他客户端类将使用的公共端点。
如果您只测试公共接口,您可以更轻松地更改细节/实现(在私有方法中),而不会破坏测试。
【讨论】:
好吧,这更有意义。我正在考虑 C# 的间谍,看看是否调用了该方法。我将进一步更新我的问题。关于公共界面,我仍然有一些问题。谢谢 @stevek 如果您还有其他问题,我会提出一个新问题,因为这已被标记为重复。 好的,我把它移到这里了。 ***.com/questions/38514315/…以上是关于在c#私有方法中正确测试接口[重复]的主要内容,如果未能解决你的问题,请参考以下文章