Aaron Hinni [mailto:aaron / hinnispace.com] wrote:

> > Well, here's my first major contribution to the Ruby world:
> > Lapidary. It's a
> > Ruby unit testing framework based largely on Smalltalk unit
> > (as opposed to
> > junit). You can read all about it at the home page,
> > http://lapidary.sourceforge.net/, or better yet, download it at
> > ftp://ftp1.sourceforge.net/lapidary/lapidary-0.2.0.tar.gz and
> > play with it.
>
> How is this different from RubyUnit?
>
> Is it that the implementation of lapidary is different from
> RubyUnit, or are
> there some actual functionality differences?

It's largely implementation, although the differences in implementation
cause differences in some of the functionality. The best way to answer how
it differs in implementation is to answer your next question/statement....


> BTW, I thought that junit was based upon sUnit.


True, but it's kind of like going to Babelfish and translating something
from French -> Spanish -> English; a lot of important things get lost along
the way. Smalltalk & Ruby are much more similiar than either Java &
Smalltalk or Java & Ruby (IMHO), so there are important concepts in sunit
that just don't exist in junit but can exist in a Ruby unit testing
framework. Particularly notable are Java's static typing and lack of blocks,
although I'm sure others can list many more. So, my goal was to get a
straight Smalltalk -> Ruby translation while being careful not to write
Smalltalk idioms into Ruby.

As I've said in several places, my intention isn't to start a 'unit testing
war.' That said, my personal opinion is that Lapidary has turned out
cleaner, easier to use, more easily extended and more robust. Of course, I'm
the author, so I'm likely to be a little biased :-) This is why I'm really
curious to get the community's feedback; I'm thick-skinned, so tell me what
you really think :-)

One area where I think Lapidary falls short is in its supporting
utilities/infrastructure... there just isn't much. Things like a test
decorator, an automatic batch runner (something that wraps up all the tests
in a directory into a test suite) and a test stub generator may be useful,
but I haven't created them yet. On these types of things, I'm waiting to
hear what people really feel like they will use, as I'm a big fan of YAGNI,
and I haven't needed any of those things yet (although the batch test runner
is going to be very useful RSN). Hopefully the user community will also
contribute the utilities they have created and find useful, and we can add
things things as they are needed.

It's hard for me to point out a lot of functional differences between
Lapidary and RubyUnit, since I haven't used and/or looked at RubyUnit much.
After looking at RubyUnit and deciding to write Lapidary, I tried to avoid
RubyUnit to make sure my work was not just a copy. A few differences I do
know of:
	* various assert* method signatures
	* inclusion of a GTK::TestRunner, and ease of adding new TestRunners.

Probably others more familiar with RubyUnit can add more.


There's more info on all of this at
http://lapidary.sourceforge.net/docs/index.html and particularly
http://lapidary.sourceforge.net/docs/explanation.html. If you have any
further questions/comments (or if this email doesn't answer your original
ones), please, let me know. As I've already said, I'd love to get everyone's
feedback, either positive, negative or indifferent :-)


Nathaniel

<:((><
+ - -						+ - -
| RoleModel Software, Inc. &		| EQUIP VI
| The XP Software Studio(TM)		|