|Jsunit: we already use it for some of our js code.||
|crosscheck: Note: Crosscheck wasn’t tested with any code.||
|jspec (no website – just a source tree)||
|Screw.unit (docs) Note: Not tested but it is very similar to jsspec and jspec.||
So it seems to him that Jsunit is the only choice we have. It is not perfect though because it does not provide an easy way to apply the TDD process for the following reasons:
- It forces you to write the unit tests in a html file instead of a .js file.
- It forces you to have a local installation of the jsunit framework in order to avoid absolute hard coded path to reference js unit files.
I tried asking about this on StackOverflow generated some interesting answers:
- Apparently MochiKit – yet another library has a framework called SimpleTest buried inside it.
Asking on the Test Driven Mailing List got another batch of answers:
- QUnit from jQuery (got several recommendations for this)
- Use GWT and do all your work in Java
In addition two people didn’t answer the question directly but instead sent my in the direction of some books:
Of the Unit Test Frameworks the real options seem to be:
- The Dojo Object Harness (DOH) unit test framework
- QUnit from jQuery
- YUI Test: see YUI Test – The New Kid on Block
I also did some digging for Mock Frameworks and have only come up with a list of tools:
- JSMock – JSMock provides expectation recording and matching, and has the ability to return, throw, and stub on object method calls
- QMock – very new
- Test Driven AJAX a presentation from Agile 2008 (long but through)
Best ongoing sources: Pathfinder Blog and Ajaxian seem to be good reading.
Nicholas C. Zakas says
Just FYI, a mock object utility is in the works for YUI Test and will be available as part of YUI 3.0 Preview Release 2. If you have any questions about YUI Test, please check out the YUI discussion list or email me directly.
Nathan L Smith says
Scriptaculous also includes a basic unit testing framework: https://github.com/madrobby/scriptaculous/wikis/unit-testing
It’s also included in Prototype’s repository.
take a look this one:
I think you’ve missed THE testing tool – Selenium. Take a look here:
There’s a port of the Scriptaculous/Protototype testing framework with no dependencies on prototype. JsUnitTest: https://jsunittest.com/
On top of that, you can use jShoulda (https://jshoulda.scriptia.net/) that provides nexted contexts and other niceties.
Mark Levison says
maysa – I’m familiar with Selenium but thought it was really a functional testing tool and not a unit testing tool. Did I miss something critical?
choan, kky, Nathan and Nicholas thanks for the additional frameworks.
Andreas Ecker says
You might also be interested in the unit testing framework that is part of qooxdoo, an open source RIA framework similar to Dojo, ExtJS, etc. but with quite a comprehensive tool chain.
Try the online version of the testrunner. Hint: hit the gray arrow at the top left (should be made more obvious). It’s a “play” button that runs the selected tests.
To find out more about the JS classes that let you define your unit tests, see the online API viewer.
For automated UI testing (based on Selenium RC), check out the Simulator project.
Radek Maciaszek says
There is a fork of JSUnit which doesn’t seem to have all the cons you mentioned (can be run using Rhino, doesn’t have to embedded into Html and seems to have some recent releases): https://jsunit.berlios.de/
Tiest Vilee says
I’m lead developer for RhinoUnit, and I’d love to know how I can improve the library for you. If you could let me know what problems you had I could look into fixing them for you.
Basically the framework developed out of real world requirements rather than just copying someone elses.
Mark Levison says
Tiest – In fact I wasn’t the one who had done the work testing the frameworks, I was just doing research on behalf of a colleague who had. I’ve passed your notes along to him.
A great list – very useful.
Another mocking library I discovered – amok https://code.google.com/p/amok/ – just because you don’t have enough options already!
Jon Kruger says
I’ve used JSSpec and it worked pretty good for me.
Here is a good post on integrating QUnit tests with TeamCity builds… https://www.lostechies.com/blogs/joshuaflanagan/archive/2008/09/18/running-jquery-qunit-tests-under-continuous-integration.aspx
Jay Kimble says
One you missed is excmaunit… sort of jsunit, but in browser.
I’d give you the URL, but I’m not sure of it… (google it yourself)
Jay Kimble says
BTW, I fat fingered that… it’s EcmaUnit –> https://kupu.oscom.org/download/ecmaunit-0.3.html
Last update is a long time ago, so if you want something recent this isn’t the animal for you
JSpec has come along way, its syntax is far better than the rest, check it out https://gist.github.com/92283 https://visionmedia.github.com/jspec/
Christian Williams says