在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#私有方法中正确测试接口[重复]的主要内容,如果未能解决你的问题,请参考以下文章

私有方法的单元测试c#[重复]

单元测试私有代码[重复]

C#:使用实现私有接口的对象参数测试方法

模拟私有方法[重复]

Python中的公共和私有方法[重复]

使用 FakeItEasy 的私有方法和属性的单元测试用例 [重复]