This year at OOPSLA, I'd like to organize a birds-of-a-feather session
for people who've used, simplified, enhanced or ported the xUnit TestingFramework.
Are you all interested?
ErichGamma and KentBeck really got the ball rolling by writing up JavaUnit in JavaReport magazine. At last count there were over ten ports of KentBeck's framework to languages as diverse as Perl, Java, C++, Visual Basic, and Objective-C.
Meeting at OOPSLA, we'd get a chance to compare notes, and talk about what works and what doesn't.
Please sign this page if you are interested. If you have evening preferences or discussion ideas, please add them.
-- MichaelFeathers
Sounds more like a
bird-of-a-Feathers
session... :-)
One of my ancestors organized a wild bof centuries ago. Our family has been associated with bofs ever since. - mf :-)
HankRoark
SteveFreeman
PeteMcBreen
KentBeck
DanielEnting
GregVaughn
RichardEmerson
XunitBofAtOopsla was well attended. Here is a list of topics that we discussed along with some proto-solutions:
Fixture Management
- what can you do when your fixtures get too large?
- Parameterize the fixture via arguments on construction or use state setters
- Large fixtures are also a good reason to refactor your tests
- Drifing dates in unit tests were mentioned. Solution was: wrap your system time call. Yet another example of how tests lead you to good decoupled code.
Functional/Database Testing
- dealing with slow setUp and tearDown
- Make a massive fixture whose state leaks across several tests (not ideal). Use something like TestSetup? in JUnit to achieve this.
- For databases, make a special tearDown that restores DB state to expected values.
- Buy a good in-memory database which supports SQL.
- Revisit your code. See if you can localize DB access. May be a problem in EJB-style apps.
Concurrency Testing
- for the determinedly non-deterministic
- Observers can be very useful.
- Inject variable wait times into repeated tests.
- subclass a simulator so that you can instrument timing dependent code from the inside.
Servlet Testing
- Testing from here
- Someone mentioned a servlet based UI. You can run tests remotely. Said he was going to email it to KentBeck and ErichGamma.
We also spoke about all of the different flavors of
TestingFramework out there. There seems to be a port to every major OO language along with some interesting hybrids, like
CppBridge.
-- MichaelFeathers