你如何测试私有方法?
我正在建立一个拥有一些公共和私人方法的类库。 我希望能够对私有方法进行单元测试(主要是在开发过程中,但对未来的重构可能也有用)。
什么是正确的方法来做到这一点?
如果您使用.net,则应使用InternalsVisibleToAttribute。
如果你想单元测试一个私有方法,可能是错误的。 单元测试(一般来说)意味着测试一个类的接口,这意味着它的公共(和受保护的)方法。 你当然可以“解决”这个问题(即使只是公开方法),但你也可以考虑:
测试私有方法可能没有用处。 但是,我有时也喜欢从测试方法中调用私有方法。 大多数情况下,为了防止代码重复测试数据生成...
微软为此提供了两种机制:
访问器
但是,当涉及原始类的接口更改时,该机制有时难以处理。 所以,我绝大多数时候都避免使用这个。
PrivateObject类另一种方法是使用Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObject
// Wrap an already existing instance
PrivateObject accessor = new PrivateObject( objectInstanceToBeWrapped );
// Retrieve a private field
MyReturnType accessiblePrivateField = (MyReturnType) accessor.GetField( "privateFieldName" );
// Call a private method
accessor.Invoke( "PrivateMethodName", new Object[] {/* ... */} );
链接地址: http://www.djcxy.com/p/21403.html