在过去的几年里,我一直认为在Java中,单元测试时广泛使用反射。由于其中一些需要检查的变量/方法是私有的,因此读取它们的值似乎是必要的。我一直认为反射API也是用于这个目的的。
上周,我不得不测试一些包并编写一些JUnit测试。像往常一样,我使用反射来访问私有字段和方法。但是我的主管审核代码时并不是很满意,并告诉我反射API不适用于这种“黑客”行为。相反,他建议修改生产代码中的可见性。
使用反射真的是不好的做法吗?我实在无法相信-
编辑:我应该提到,我被要求所有测试都在名为test的单独包中(因此使用受保护的可见性等并不是可行的解决方案)