Moq你如何测试内部方法?

8 .net c# moq

老板告诉我使用Moq,就是这样.我喜欢它,但它似乎不像MSTest或mbunit等...你无法测试内部方法

所以我被迫在我的界面中公开一些内部实现,以便我可以测试它.

我错过了什么吗?

你能用Moq测试内部方法吗?

非常感谢

Rob*_*vey 11

您可以使用InternalsVisibleTo属性使方法对Moq可见.

http://geekswithblogs.net/MattRobertsBlog/archive/2008/12/16/how-to-make-a-quotprotectedquot-method-available-for-quotpartialquot-mocking-and-again.aspx

  • 对于强名称程序集,您需要这个.[组件:InternalsVisibleTo( "DynamicProxyGenAssembly2,公钥= 0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] (4认同)

jle*_*jle 5

使内部对其他类可见以进行测试没有任何问题.如果你需要测试一个类的内部,一定要这样做.仅仅因为这些方法不公开并不意味着你应该忽略它们并仅测试公共方法.一个设计良好的应用程序实际上将大部分代码封装在您的类中,使它们不公开.所以在你的测试中忽略非公开方法是一个很大的错误恕我直言.单元测试的一个优点是你测试代码的所有部分,无论多小,当你的测试都以100%运行时,这是一个非常合理的假设,当所有这些部分放在一起时,你的应用程序将适用于最终用户.当然,验证后一部分是集成级别测试的来源 - 这是一个不同的讨论.所以试试!!!