用public为单元测试更改私有方法签名

68de4m5k  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(515)

我知道用public改变私有方法的符号忽略了封装原则。另外,私有方法是一个实现细节。但我想知道,如果这个方法不影响或破坏系统的其他部分,我能公开这个方法的签名吗?
例如;
我有一个方法,其中包括开关盒块;

private Object foo(Object object, MyTypeEnum type) {
    ....
    switch(type) {
      case type.x:
         return "a";
     case type.y:
         return "b";
     case type.z:
         return "c";
     .
     .
     .
  }
  ..
 }

此外;
将utils类中的方法移动到能够公开其符号的位置是不好的做法,因为该方法不是泛型的和可重用的
测试调用私有方法(foo)的公共方法是解决方案之一。但是,我的代码库有很多遗留的和未经测试的代码,所以我必须更改其他类和方法。此外,我没有足够的时间重构代码库的其他部分。
你对这个案子有什么建议?

vq8itlhq

vq8itlhq1#

您已经知道这不是一个好的形式,但由于这些确切的原因,尝试测试工作但未经测试的遗留代码通常不是一个好的时间投资。你不想花很长时间来改造旧的东西只是为了增加测试;它实际上增加了生产中发生意外事件的风险。请参见向遗留代码添加单元测试
在这种情况下,我总是尝试在更高的层次上进行测试,而不是在单个类中测试单个方法。

相关问题