如何解决更改公开的私有方法签名以进行单元测试
我知道用公共忽略更改封装方法的私有方法的标志。另外,私有方法是一个实现细节。但是我想知道如果该方法没有影响或破坏系统的其他部分,我可以公开该方法的签名吗?
例如;
我有一个包含开关盒的方法;
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)的公共方法是解决方案之一。但是,我的代码库中有很多遗留的未经测试的代码,因此我必须更改其他类和方法。此外,我没有足够的时间重构代码库的其他部分。
对于这种情况,您有什么建议?
解决方法
您已经知道这不是一种很好的形式,但是由于这些确切的原因,尝试测试可运行但未经测试的旧代码通常不是对时间的良好投资。您不想花很多时间来改造旧的东西,只是为了添加测试。实际上,这会增加生产中意外发生的风险。参见Adding unit tests to legacy code
在这种情况下,我总是尝试在更高级别上进行测试,而不是在单个类中使用单个方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。