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

Matthijs Langenberg mlangenberg at gmail.com
Tue Feb 26 15:54:42 EST 2008


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-devel/attachments/20080226/028dbce7/attachment-0001.html 


More information about the rspec-devel mailing list