[rspec-devel] [ANN] quicktest - an RSpec wrapper for in-lining tests

greg weber webs.dev at gmail.com
Tue Feb 26 07:56:08 EST 2008


== ABOUT
Quicktest is a utility for inlining ruby unit tests with the ruby code under
test

The typical test driven development workflow requires constant switching
between the file containg the source code and the the file containg the
tests. When creating code, it can be more convenient to place tests
immediately after the code you are writing.  After the code has been
written, it may be a good idea to move it to another file, but the option to
permanently keep tests with the source is available (useful for scripts).

Quicktest is designed to support quick tests in a framework agnostic way.
Currently, only an rspec testrunner is available, but it is trivial to write
one for another testing framework.

== FEATURES
Quicktest uses method tracing to know the method you are testing. By default
the output of a failed test will show the object and method name.

== USAGE
To test a method, place another method called 'quicktest' immediately after
it
the quicktest method has three OPTIONAL arguments
- the test runner object
- a reference to self
- a method object for the method under test

run with spec -r quicktest file_to_test

There is a convenience script so that you can just run

   quickspec file_to_test

== NOTES
- leaving test code in with your production code is not necessarily a good
idea, but there is almost no runtime overhead to doing so since ruby will
not evaluate code in a method until the method is invoked
- quicktest instance methods not working properly? if the class (or one of
its ancestors) is overriding method tracing than including QuickTest::Tracer
will fix it.


example: run with bin/quickspec

class Foo
  attr_reader :bar

  def initialize
    @bar = true
  end
  def quicktest t, s
    t.it "bar should be initialized to true" do
      s.bar.should == true
    end
  end

  def self.hello arg
    "hello" + arg
  end
  def self.quicktest t, s, meth
    t.it "should prepend 'hello' to its argument" do
      meth["world"].should == 'hello world' # error - no space 'helloworld'
    end
  end
end


Running quicktest on the above outputs the following:
.F

1)
'Foo hello should prepend 'hello' to its argument' FAILED
expected: "hello world",
     got: "helloworld" (using ==)
./README:22:in `quicktest'
/home/greg/quicktest/lib/quicktest.rb:65:in `instance_eval'
/home/greg/quicktest/lib/quicktest.rb:65:in `run_tests'

Finished in 0.008338 seconds

2 examples, 1 failure
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-devel/attachments/20080226/a36a553c/attachment.html 


More information about the rspec-devel mailing list