|
Saturday, November 27, 2004
|
|
|
Friendy C++ Unit Tests
In C++ the friend keyword makes writing unit test code easy and clean.
The question is how do you keep your test code separate from your
"real" code while having a minimal public interface and allowing
seperate test classes access to the internals of the classes being
tested?
I want code separation so my code is clean and the final image doesn't
include test code. As the test code is usually larger than the code
being tested this is important. Please, no separate compilation using
macros.
I believe in testing everything that can break so i don't just test
public interfaces. Public interfaces often use a common private
interface that i want to be able to test directly so it doesn't have to
be retested for each public interface. This requires another class to
have non-public access to the innards of another class.
In C++ this is what friend does for you, rather cleanly. Test classes
can be put in another package. And with a forward declaration and
the friend keyword, a class can be put under test by any number of
other test classes.
class TestClass;
class ClassTested
{
private:
friend TestClass;
};
The implementation source file would include the path to the full TestClass.
I allow all the code in a package to touch the privates of other
classes in the same package. This makes for a minimum public display of
behaviour. I assume all code in the same package goes together somehow
so there's no need for a class to protect itself from code in the same
package.
1:40:25 PM
|
|
|
|
© Copyright
2006
todd hoff.
Last update:
7/11/2006; 1:13:29 PM.
|
|
November 2004 |
Sun |
Mon |
Tue |
Wed |
Thu |
Fri |
Sat |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
|
|
|
Oct Dec |
|