Roo*_*kie 5 java unit-testing jmock mockito
我有一个A类,它有一个由B类代表的内部Cache.这个内部类是私有的,因为缓存不需要对外部消费者可见,只是为了帮助外部类A.我使用的是Jmock和Java
public class A {
...
private class B {
...
public void testMethod() {
//The method I want to unit test
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
如上所示.我不确定如何对来自私有内部类B的testMethod()进行单元测试(因为B类对于外部世界是不可见的).
请指教!
谢谢!
因为缓存不需要对外部消费者可见
单元测试是外部消费者.它是一个类,它调用被测对象的功能,就像任何其他类一样.
警告:关于这个问题有很多意见和争论.我在这里展示的不是"一个真正的答案",而是基于我自己在代码中维护单元测试的经验.
不要直接对私人成员进行单元测试.它不仅通常需要一点点诡计才能实现,它会在类之间创建耦合.(测试类和正在测试的类.)暴露内部和耦合它们违反了面向对象的原则.
而不是根据您在类中调用的方法来考虑测试,而是根据您在单元上调用的功能来考虑测试.无论该单元暴露什么功能,都应该测试什么.
这导致了一些结论:
由于使用该对象的代码只能调用公共功能,因此测试该对象的代码应仅验证公共功能.