All*_*nde 2 junit unit-testing private-members
我正在尝试用一些私有方法对一个类进行单元测试.每种私有方法都可以相当广泛.
我可以使方法包作用域(导致警告),或者我可以使用下面的代码来测试它:
Method method = instance.getClass().getDeclaredMethod("methodName");
method.setAccessible(true);
Object object = method.invoke(instance);
assertNotNull(object);
Run Code Online (Sandbox Code Playgroud)
这个类不是"上帝对象",它的大部分方法都涉及它的所有领域.
关于如何更好地处理这个问题的任何建议?
KLE*_*KLE 11
测试私有方法也可能是一种测试气味.
我的参考资料是优秀的书籍http://www.manning.com/rainsberger/
您应该测试行为而不是方法:粒度有点不同.
示例1:要测试桩,您如何测试
push并且pop不相互引用?但是测试全球行为是可能的.这提醒我们,即使是测试,对象也是正确的粒度,而不是方法.示例2:当您要测试多个对象之间的交互时,按方法测试方法显然不正确,您要测试全局行为.
如果一个方法不公开,它就不能被外界调用,并且它的行为不太严格.但更重要的是,如果您测试私有方法,您将无法在以后重构代码.因此,测试应仅针对公共代码进行.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |