Fully namespaced, debuggable unit tests

Colin Clark colin.clark at utoronto.ca
Sun Feb 24 20:13:01 UTC 2008


Hi everyone,

We've been struggling for awhile now with jsUnit, a testing framework  
for in-browser JavaScript unit tests. We have hundreds of jsUnit tests  
for all of Fluid's code. It provides a familiar xUnit-style  
environment for writing tests, but it imposed some really frustrating  
restrictions including:

  * Inability to put unit test code into a private namespace
  * The Firebug debugger simply won't work with it

Trying to debug tests without a solid debugger is, as you can imagine,  
slow and frustrating. After fighting with it for too long, I finally  
decided to do some research and get rid of jsUnit altogether.

There are a lot of half-baked JavaScript testing frameworks out there.  
None of them are perfect, but the least broken amongst them seems be-- 
no surprise here--the one written by John Resig for testing jQuery. I  
had a fairly painless time porting my tests to this framework, which  
I've dubbed "jqUnit." In the process, I wrote a number of adaptor  
functions that make it much easier to port over old jsUnit tests:

https://source.fluidproject.org/svn/sandbox/tabindex/trunk/tests/jqUnit/jqUnit.js

In the process, the unit tests for my jQuery keyboard accessibility  
plugin are fully debuggable with Firebug and totally self-contained in  
their own namespace!

https://source.fluidproject.org/svn/sandbox/tabindex/trunk/tests/keyboard-a11y-tests.js
https://source.fluidproject.org/svn/sandbox/tabindex/trunk/tests/keyboard-a11y-tests.html

Given this experience, I hope we'll be porting the Reorderer's large  
suite of unit tests over as soon as we've finished our current round  
of development.

Colin

---
Colin Clark
Technical Lead, Fluid Project
Adaptive Technology Resource Centre, University of Toronto
http://fluidproject.org




More information about the fluid-work mailing list