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

Corey Haines coreyhaines at gmail.com
Tue Feb 26 18:53:57 EST 2008


This is interesting. I really like the python doctest stuff, but, while
using it with a friend on writing something, it seemed almost to start to
get cumbersome for lots of examples. I have several specs per method, so I
wonder how it scales.

-Corey

On Tue, Feb 26, 2008 at 3:54 PM, Matthijs Langenberg <mlangenberg at gmail.com>
wrote:

> It would almost be possible to generate the actual ruby code from the
> quicktest method ;-).
>
> To be honest, I like it that my examples don't mix with the actual code,
> it looks a bit cleaner. Interesting approach though, maybe I'll give it a
> shot.
>
>
> On Tue, Feb 26, 2008 at 1:56 PM, greg weber <webs.dev at gmail.com> wrote:
>
> > == 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
> >
> > _______________________________________________
> > rspec-devel mailing list
> > rspec-devel at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-devel
> >
>
>
> _______________________________________________
> rspec-devel mailing list
> rspec-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-devel
>



-- 
http://www.coreyhaines.com
The Internet's Premiere source of information about Corey Haines
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-devel/attachments/20080226/e18ce4a4/attachment.html 


More information about the rspec-devel mailing list