From: "Volkmann, Mark" Date: 2002-10-05T03:52:37+09:00 Subject: Re: assertions in Ruby This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C26BD6.F8DFB8E0 Content-Type: text/plain; charset="iso-8859-1" > -----Original Message----- > From: Alan Chen [mailto:alan@digikata.com] > Sent: Friday, October 04, 2002 1:36 PM > To: ruby-talk@ruby-lang.org > Subject: Re: assertions in Ruby > > > On Sat, Oct 05, 2002 at 03:07:53AM +0900, Volkmann, Mark wrote: > > > > > -----Original Message----- > > > From: Alan Chen [mailto:alan@digikata.com] > > > Sent: Friday, October 04, 2002 11:37 AM > > > To: ruby-talk@ruby-lang.org > > > Subject: Re: assertions in Ruby > > > > > > On Fri, Oct 04, 2002 at 10:43:46PM +0900, Volkmann, Mark wrote: > > > > > > > > Is anyone aware of a Ruby module that adds support for > > > assertions such as what > > > > is supported in Java 1.4? I wrote such a thing yesterday > > > and am considering > > > > releasing it if I'm not duplicating what someone else has > > > already done. > > > > I've included some examples below showing how mine is used. > > > > > > I have an unreleased, partailly completed module which include the > > > Test::Unit asserts when $DEBUG is set and do nothing otherwise. It > > > looks almost the same as yours. The only suggestion I > have is maybe > > > working it in with the Ruby::Unit or Test::Unit frameworks. > > I'm not quite convinced that assertions should be > integrated with a unit > > testing framework. They seem fundamentally different to me. > > With assertions enabled, an application generally stops as > soon as one fails. > > Results are not collected into a report since only one > failure is reported. > > Assertions go in the code and remain there for > documentation purposes. > > With unit tests, tests continue even if one fails. Results > are collected into > > a report. Unit tests go in a separate class written > exclusively for testing > > purposes. > > What kinds of things do you envision that an assertion > framework borrow from a > > unit testing framework? > > Sorry, I didn't mean to imply that unit testing and assertions should > be strongly tied together. Test::Unit for example provides a wide > range of asserts already. The Test::Unit assert code itself is a > fairly orthogonal module, and, as far as I know, has no other > dependencies on other parts of the unit test framework. So.. I just > did something like the following: > > if $DEBUG > module Myasserts > require 'test/unit/assertions' > include Test::Unit::Assertions > end > else > # all empty assert methods > module Myasserts > def flunk(msg);end > def assert(expr,msg);end > # other assertions omitted... > end > end > > Now instead of Myasserts, an integrated module might be named > Test::Assertions. The main reason to separate into its own module is > that you always want the asserts to fire in a unit test, but not > always during an application run. I don't really care if its > $DEBUG that controls it or some other flag. $DEBUG was just convenient > in my case. Ahh ... now I see what you're getting at. I'll see if I can rewrite my assertion code to build on top of assert.rb in RUnit. Thanks for the tip! *********************************************************************************** WARNING: All e-mail sent to and from this address will be received or otherwise recorded by the A.G. Edwards corporate e-mail system and is subject to archival, monitoring or review by, and/or disclosure to, someone other than the recipient. ************************************************************************************ ------_=_NextPart_001_01C26BD6.F8DFB8E0 Content-Type: text/html; charset="iso-8859-1" RE: assertions in Ruby

> -----Original Message-----
> From: Alan Chen [mailto:alan@digikata.com]
> Sent: Friday, October 04, 2002 1:36 PM
> To: ruby-talk@ruby-lang.org
> Subject: Re: assertions in Ruby
>
>
> On Sat, Oct 05, 2002 at 03:07:53AM +0900, Volkmann, Mark wrote:
> >
> > > -----Original Message-----
> > > From: Alan Chen [mailto:alan@digikata.com]
> > > Sent: Friday, October 04, 2002 11:37 AM
> > > To: ruby-talk@ruby-lang.org
> > > Subject: Re: assertions in Ruby
> > >
> > > On Fri, Oct 04, 2002 at 10:43:46PM +0900, Volkmann, Mark wrote:
> > > >
> > > > Is anyone aware of a Ruby module that adds support for
> > > assertions such as what
> > > > is supported in Java 1.4?  I wrote such a thing yesterday
> > > and am considering
> > > > releasing it if I'm not duplicating what someone else has
> > > already done.
> > > > I've included some examples below showing how mine is used.
> > >
> > > I have an unreleased, partailly completed module which include the
> > > Test::Unit asserts when $DEBUG is set and do nothing otherwise. It
> > > looks almost the same as yours.  The only suggestion I
> have is maybe
> > > working it in with the Ruby::Unit or Test::Unit frameworks.
> > I'm not quite convinced that assertions should be
> integrated with a unit
> > testing framework. They seem fundamentally different to me.
> > With assertions enabled, an application generally stops as
> soon as one fails.
> > Results are not collected into a report since only one
> failure is reported.
> > Assertions go in the code and remain there for
> documentation purposes.
> > With unit tests, tests continue even if one fails.  Results
> are collected into
> > a report.  Unit tests go in a separate class written
> exclusively for testing
> > purposes.
> > What kinds of things do you envision that an assertion
> framework borrow from a
> > unit testing framework?
>
> Sorry, I didn't mean to imply that unit testing and assertions should
> be strongly tied together.  Test::Unit for example provides a wide
> range of asserts already. The Test::Unit assert code itself is a
> fairly orthogonal module, and, as far as I know, has no other
> dependencies on other parts of the unit test framework.  So.. I just
> did something like the following:
>
> if $DEBUG
>       module Myasserts
>               require 'test/unit/assertions'
>               include Test::Unit::Assertions
>       end
> else
>       # all empty assert methods
>       module Myasserts
>               def flunk(msg);end
>               def assert(expr,msg);end
>               # other assertions omitted...               
>       end
> end
>
> Now instead of Myasserts, an integrated module might be named
> Test::Assertions.  The main reason to separate into its own module is
> that you always want the asserts to fire in a unit test, but not
> always during an application run.  I don't really care if its
> $DEBUG that controls it or some other flag. $DEBUG was just convenient
> in my case.

Ahh ... now I see what you're getting at.  I'll see if I can rewrite my assertion code to build on top of assert.rb in RUnit.  Thanks for the tip!



***********************************************************************************
WARNING: All e-mail sent to and from this address will be received or
otherwise recorded by the A.G. Edwards corporate e-mail system and is
subject to archival, monitoring or review by, and/or disclosure to,
someone other than the recipient.
************************************************************************************
------_=_NextPart_001_01C26BD6.F8DFB8E0--