[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