On Jun 3, 8:50 pm, Ben Finney <[EMAIL PROTECTED]>
wrote:
> alex23 <[EMAIL PROTECTED]> writes:
> > So the basic answers I'm seeing that "do just fine" are:
>
> > 1. Don't test private functions.
> > 2. Add functionality _to_ the private functions for testing.
> > 3. Change the interface for the purpose of testing.
>
> > All of which seem exceptionally inefficient and run counter to the
> > whole purpose of unit testing.
>
> It seems you have a different idea of what unit testing is for from
> me.
>
> Isn't the entire point of encapsulation to separate internal
> components from the external interface?
>
> Why would a unit test, the whole purpose of which is to assert some
> aspect of the external behaviour of the unit of code, care about how
> that code unit is implemented internally?
>
> If changing the internal, encapsulated components of a unit causes its
> external behaviour to change, that's a bug; either in the change made
> (it shouldn't have altered the external behaviour), or in the unit
> test asserting the wrong thing (it shouldn't be asserting anything
> about internal state of the code).
>
> --
>  \       “Try to become not a man of success, but try rather to become |
>   `\                                 a man of value.” —Albert Einstein |
> _o__)                                                                  |
> Ben Finney

Thank you. Let me just add that, as I said before, I think "private"
data (if it were added to Python) should be accessible through some
sort of "indirect" mechanism akin to the double-leading-underscore
rule. Then, even if it *is* needed for unit testing, it can be
accessed.

As for unit testing in C++, Java, and Ada, I confess I know nothing
about it, but I assume it gets done. Considering that Ada is used to
manage and control fighter jets, cruise missiles, and nuclear
arsenals, let's hope it gets done right.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to