繁体   English   中英

私人class junit测试

[英]Private class junit testing

我如何测试这个私有方法? 我无法通过自己的环境变量来测试它。 谢谢。

@Value("{jobParameters['businessId']}")
String environment;

public void A() {
  B(environment)
}

private void B(String env) {
 switch(env) {
   case 'a': //do something
     break;
   case 'b': //do something
     break;
   default: //do something
  }
}

一些解决方案

  • 你不能用Mockito做到这一点,但你可以使用Powermock (除了 Mockito)和模拟私有方法
  • 改变你的方法的可见性 -> Very bad practice ,但我看到很多代码使用“包”可见性只是为了能够测试这些方法。
  • 如果你做的是真正的面向对象,你通常不需要测试这些方法。只需要测试你的对象公开的方法。 我们只是不关心私有方法,因为从测试私有方法的角度来看不存在(黑盒测试)。

如上所述,您不应该测试私有方法。 但是如果你真的想这样做,你也可以使用反射从你的单元测试中调用你的私有方法并将环境变量传递给它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM