🕷 zenspider.com

by ryan davis

Looking for the Ruby Quickref?

ZenTest 3.9.0: now with more Evil

Published 2008-01-31 @ 11:31

Tagged zentest, rails, ruby, thoughts, minitest

Something I should have emphasized more in my release notes:

  • Added ability to set test execution order, defaults to :random. EVIL!

What does this mean?

It means that if you ignored my post titled “rake passes but autotest fails?”, then autotest is gonna get its revenge when you update. No. Really. It is gonna f’ your tests up real good. Why? Because it is Good Testing Practice™ for all your tests to be completely standalone. If I could run your individual tests randomly I’d do that as well(*).

I’ve had a number of filed bugs and hallway conversations where someone states “blah blah … but when I run it under autotest, it fails” and somehow they’ve convinced themselves that it is autotest’s fault. “HAH!”, I say! Not bloody likely. If your tests aren’t written in such a way that each and every individual test can be run in isolation or in any combination and order, then you didn’t write tests, you wrote bugs. I really can’t emphasize that enough so autotest plans to help you exorcize yourself of these bugs.

Really, you should just take the hit right now and deal with it. But what if your PHB is breathing down your neck? You can tell autotest to run your tests in “Ye Olde Fashioned Sorted Mode” with the following (be sure to copy and paste and fill it out:

  Autotest.add_hook :initialize do |at|
    at.order = :alpha  #  I am a bad person. [your name], [today's date]

and then make yourself a promise that in 1 month’s time autotest will be able to run your tests in any order. Now write it down, and sign it, in blood.

*) I did mention that I wrote miniunit, right? *smile*
**) They probably aren’t. PHB’s usually won’t let you use autotest in the first place. Or write tests for that matter. So if you’ve gotten this far, you’re probably in good shape.