Github user Derek-Ashmore commented on the pull request:
https://github.com/apache/commons-lang/pull/141#issuecomment-219016359
Thanks for taking time to respond. I should be challenged on the need
for this. I grant your point-- over-exposing methods is technically
possible. I've issues with that, however.
From an design perspective, you should only expose fields (through
accessors/mutators) and methods you intend to expose. That is, that are
being made available for use by other classes or by inheritance.
Over-exposing methods and fields in the way you describe violates OO
design principles. Creating an easy way for test code to access
privates is less of a principle breach; test classes presumably know
exactly how a class is supposed to operate and are tightly coupled to
that class anyway.
Why create FieldUtils? That logic should also have been used to not
implement the methods on FieldUtils that allow you to manipulate private
fields. Doesn't that run into the same issue?
I don't like over-exposing fields and methods just to be able to cover
them in testing. I'm not alone.
Thanks for taking a look at this request and taking time to comment.
Thanks, also, for the most interesting discussion.
Derek <https://www.linkedin.com/in/derekashmore>
<https://twitter.com/Derek_Ashmore> <http://www.derekashmore.com/>
Please note that my email address has changed to
[email protected]
On 5/13/2016 5:23 AM, sebbASF wrote:
>
> Note that an alternative solution for testing private methods is to
> make them package-protected.
> (and document why they are not private!)
>
> The test code needs to access it from the same package, but that is
> not usually a problem.
> If necessary create a public method in the same package which can be
> used by all the test code.
> A similar approach can be used for private fields; create a
> package-protected getter.
>
> â
> You are receiving this because you authored the thread.
> Reply to this email directly or view it on GitHub
> <https://github.com/apache/commons-lang/pull/141#issuecomment-219006770>
>
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---