我是Junit测试的新手,想测试一个类中的私有方法。但它会导致可见性问题。我可以使用Junit测试私有方法或受保护的方法。或者我可以在构造函数中测试逻辑Junit的?
答案 0 :(得分:-2)
简单地这样做:
private someMethod() {}
public someMethodVisibleToAll() {
someMethod();
}
在没有任何测试权限的情况下隐藏复杂逻辑在私有方法中并不是一个好主意,尝试使方法具有幂等性(没有副作用)。
如果遗留代码使用Powermock,但首先尝试重构以上代码,如果不可能将Powermock作为上次紧急中断。
注意:如果您使用JUnit测试具有相同包名称的约定,则受保护的方法是可测试的,例如
代码 src / main / java
package my.package.first
在JUnit文件夹 src / main / test
中package my.package.first
比所有受保护的方法都可用于测试
更新
应该始终有一种方法通过公共方法间接测试私有方法,或者使用或包括使用私有方法进行测试的方法。如果不是这样,并且您不依赖于遗留代码或第三方代码,那么它就是警告类设计出现问题。