Announce: 20061230 release of FitLibrary in Java for FitNesse

View: New views
10 Messages — Rating Filter:   Alert me  

Announce: 20061230 release of FitLibrary in Java for FitNesse

by Rick Mugridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

That's available at https://sourceforge.net/projects/fitlibrary/

This release includes some new new capability and a fix. Changes include
the following. See the UserGuide included in the download zip file for
further details.

 * FitLibrary now enables debugging when running storytests.
 * CompareFileFixture now handles absolute file names as well as
relative file names.
 * An empty tables cell may be interpreted as follows, depending on what
value the cell is expected to hold:
  * An empty list, set, array, map
  * A null value for an object, including Integer, etc
 * FitLibrary accesses private getter/setters for properties. This
allows for setter injection without generally exposing properties.
 * FitLibrary accesses private nullary constructors. This allows for
object creation without generally exposing the constructor.
 * Use of HR to separate phases of DomainFixture
 * The method that is called for a calculation rules may return an
object that's a subtype of the declared return type of the method. The
actual type of the result is used to check it against the expected value
 * Fixed problem with a startUp() method being called more than once for
suite fixtures, etc.
 * Lots of storytests have been added to check that exceptions are
caught correctly and nulls are handled correctly
 * Experimental feature: If it exists, the method startCreatingObject()
of a domain adapter or sut is called when DomainFixture (and other
fixtures) automatically create an object; the object is passed as an
argument. This allows for specialised setup of the object before it has
property values automatically injected into it. The corresponding method
endCreatingObject() is called at the end of automatic injection.
 * Experimental feature: A parse delegate may be specified for any type,
and so will be override any provided Parser for that type for the
duration of the storytest concerned.
 * Experimental feature: A revised mechanism for supporting polymorhism
is included. I will later add support for tailoring the way that the
type is specified in the table.  The documentation is still to be completed.
 * Only relevant to those who write their own fixtures: The
interpretation cycle passes extra type information; this is used in
FitLibrary2 to track the generic types of objects (which is missing at
runtime, due to ''erasure'' in Java). The way that Parsers are selected
has been changed considerably. Some class names have been changed, and
the package structure has changed in minor ways. FitLibraryServer has
changed considerably.

Cheers, Rick




RE: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Jeff Parker :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Do you know when the .NET version of this library will be released?

-----Original Message-----
From: fitnesse@... [mailto:fitnesse@...] On Behalf
Of Rick Mugridge
Sent: Friday, December 29, 2006 6:14 PM
To: fitnesse@...
Subject: [fitnesse] Announce: 20061230 release of FitLibrary in Java for
FitNesse

That's available at https://sourceforge.net/projects/fitlibrary/




Re: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Rick Mugridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I hope to finish the first release of Breve in Java, in a few weeks. (I
expect to be able to run full storytests with it for the first time in a
few hours).

I will then port Breve and FitLibrary and FitLibrary2 (with generics) to
C#, as more of my clients now are .NET-based; they are bemused that I
don't support C#. Thereafter, I'll maintain the Java and C# versions in
synch. I will not be doing a port to Python; John Roth is active with that.

Many thanks to Mike Stockdale for his earlier work on FitLibrary in C#.

BTW, Breve is a IDE for storytests, with WYSIWYG editing of
storytests/tables/suites, refactoring, searching, auto-completion,
running, etc etc (analogous to Eclipse). It has the start of a plug-in
architecture, to allow for plug-ins, such as to generate FitNesse wiki
pages or HTML. A later release will introduce it as an IDE plugin, such
as for Eclipse. I'll initially make it available as a freeware product;
a later version will include a book. FitLibrary itself will continue in
open-source.

Cheers, Rick

Jeff Parker wrote:

>
> Do you know when the .NET version of this library will be released?
>
> -----Original Message-----
> From: fitnesse@... <mailto:fitnesse%40yahoogroups.com>
> [mailto:fitnesse@... <mailto:fitnesse%40yahoogroups.com>]
> On Behalf
> Of Rick Mugridge
> Sent: Friday, December 29, 2006 6:14 PM
> To: fitnesse@... <mailto:fitnesse%40yahoogroups.com>
> Subject: [fitnesse] Announce: 20061230 release of FitLibrary in Java for
> FitNesse
>
> That's available at https://sourceforge.net/projects/fitlibrary/ 
> <https://sourceforge.net/projects/fitlibrary/>
>
>  

Re: Announce: 20061230 release of FitLibrary in Java for FitNesse

by James Carr :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Rick,

Sounds awesome, as always. One question though, will the IDE include a kind
of GUI for writing story tests easier? One problem I've had with some
clients is that they find wiki markup scary, and sometimes even I lose my
place within large tables with all of those pipes. I was working on a
javascript based xmlhttp plugin for live editing of tables, but haven't had
time lately to complete it. Does Breve allow for this?

Thanks,
James

On 12/31/06, Rick Mugridge <rick@...> wrote:

>
>    I hope to finish the first release of Breve in Java, in a few weeks. (I
> expect to be able to run full storytests with it for the first time in a few
> hours).
>
> I will then port Breve and FitLibrary and FitLibrary2 (with generics) to
> C#, as more of my clients now are .NET-based; they are bemused that I don't
> support C#. Thereafter, I'll maintain the Java and C# versions in synch. I
> will not be doing a port to Python; John Roth is active with that.
>
> Many thanks to Mike Stockdale for his earlier work on FitLibrary in C#.
>
> BTW, Breve is a IDE for storytests, with WYSIWYG editing of
> storytests/tables/suites, refactoring, searching, auto-completion, running,
> etc etc (analogous to Eclipse). It has the start of a plug-in architecture,
> to allow for plug-ins, such as to generate FitNesse wiki pages or HTML. A
> later release will introduce it as an IDE plugin, such as for Eclipse. I'll
> initially make it available as a freeware product; a later version will
> include a book. FitLibrary itself will continue in open-source.
>
> Cheers, Rick
>
> Jeff Parker wrote:
>
>  Do you know when the .NET version of this library will be released?
>
> -----Original Message-----
> From: fitnesse@... <fitnesse%40yahoogroups.com> [mailto:
> fitnesse@... <fitnesse%40yahoogroups.com>] On Behalf
> Of Rick Mugridge
> Sent: Friday, December 29, 2006 6:14 PM
> To: fitnesse@... <fitnesse%40yahoogroups.com>
> Subject: [fitnesse] Announce: 20061230 release of FitLibrary in Java for
> FitNesse
>
> That's available at https://sourceforge.net/projects/fitlibrary/
>
>    
>

Re: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Rick Mugridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi James,

Yes, at the moment, writing the storytests is the biggest limit on
storytest driven development.

Breve is GUI-based; I've been building it since April. My aim is to make
it easy for Product Managers who are happy in Word, etc, while also
being what I want. (For a very rough idea, it will be like comparing a
simple text editor with Eclipse in terms of support and what can be
auto-generated). I'm working with a "non-technical" Product Manager who
will start using it in a few weeks and provide feedback, and I've lined
up a usability expert to do a  usability study.

I've developed specialised GUI for handling the tables, as Word, Excel,
and other apps that play with tables, all handle nested tables poorly.
I'm working on refactoring at the moment, which has led to some
interesting architectural changes.

We've learned a lot from having great tools like FitNesse and Fit.

Cheers, Rick

James Carr wrote:

>
> Rick,
>
> Sounds awesome, as always. One question though, will the IDE include a
> kind of GUI for writing story tests easier? One problem I've had with
> some clients is that they find wiki markup scary, and sometimes even I
> lose my place within large tables with all of those pipes. I was
> working on a javascript based xmlhttp plugin for live editing of
> tables, but haven't had time lately to complete it. Does Breve allow
> for this?
>
> Thanks,
> James
>
> On 12/31/06, *Rick Mugridge* <rick@...
> <mailto:rick@...>> wrote:
>
>     I hope to finish the first release of Breve in Java, in a few
>     weeks. (I expect to be able to run full storytests with it for the
>     first time in a few hours).
>
>     I will then port Breve and FitLibrary and FitLibrary2 (with
>     generics) to C#, as more of my clients now are .NET-based; they
>     are bemused that I don't support C#. Thereafter, I'll maintain the
>     Java and C# versions in synch. I will not be doing a port to
>     Python; John Roth is active with that.
>
>     Many thanks to Mike Stockdale for his earlier work on FitLibrary
>     in C#.
>
>     BTW, Breve is a IDE for storytests, with WYSIWYG editing of
>     storytests/tables/suites, refactoring, searching, auto-completion,
>     running, etc etc (analogous to Eclipse). It has the start of a
>     plug-in architecture, to allow for plug-ins, such as to generate
>     FitNesse wiki pages or HTML. A later release will introduce it as
>     an IDE plugin, such as for Eclipse. I'll initially make it
>     available as a freeware product; a later version will include a
>     book. FitLibrary itself will continue in open-source.
>
>     Cheers, Rick
>
>     Jeff Parker wrote:
>>
>>     Do you know when the .NET version of this library will be released?
>>
>>     -----Original Message-----
>>     From: fitnesse@...
>>     <mailto:fitnesse%40yahoogroups.com>
>>     [mailto:fitnesse@...
>>     <mailto:fitnesse%40yahoogroups.com>] On Behalf
>>     Of Rick Mugridge
>>     Sent: Friday, December 29, 2006 6:14 PM
>>     To: fitnesse@... <mailto:fitnesse%40yahoogroups.com>
>>     Subject: [fitnesse] Announce: 20061230 release of FitLibrary in
>>     Java for
>>     FitNesse
>>
>>     That's available at https://sourceforge.net/projects/fitlibrary/
>>     <https://sourceforge.net/projects/fitlibrary/>
>>
>
>  

Parent Message unknown RE: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Helck, Christopher :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Rick and other Fitnesse Folk,
 
The new release seems to fix many of the problems I had encountered with
the delta release. Many thanks.
 
I'm still having problems with setUp() and tearDown().
 
I have a SuiteFixture, DoFixture, and domain object called TdlSuite,
ProtocolFixture, and ProtocolModel. My DoFixture creates the domain
object in its constructor and reuses it as needed. I notice that the
domain object's setUp() and tearDown() methods are being called right
away immediately after my DoFixute is parsed. Is this the correct
behaviour?
 
I have these classes:
 
public class TdlSuite extends SuiteFixture {
  public Object protocol() {
    return new ProtocolFixture();
 }
...
}
 
public class ProtocolFixture extends DoFixture {
  public ProtocolFixture() {
    super(new ProtocolModel());
  }
 
  // More methods that return various Fixtures that wrap ProtocolModel.
  public Fixture configure { ... }
  ...
}
 
public class ProtocolModel {
  public void setUp() { ...}
  public void tearDown() {...}
 
  // Domain specific methods
  ...
}
 
My test looks like this:
 
|com.ebs.TdlSuite|
 
|select or | complete|
 
|keywords | complete|
 
|protocol|                 # Line 1
 
|configure|
|blah blah blah|
 
# Following tables are normal DoFixure stuff...
.
 
When the test runs the ProtocolModel's setUp/tearDown methods are both
being called right after Line 1 in the test. I was hoping that the
tearDown would be called when the ProtocolFixture went out of scope
(flow?). The obvious fix for me is to move the setup/teardown logic up
into the ProtocolFixture, but I wonder what your take is on this?
 
Happy New Year,
Chrsitopher Helck
 

________________________________

From: fitnesse@... [mailto:fitnesse@...] On
Behalf Of Rick Mugridge
Sent: Friday, December 29, 2006 7:14 PM
To: fitnesse@...
Subject: [fitnesse] Announce: 20061230 release of FitLibrary in Java for
FitNesse



That's available at https://sourceforge.net/projects/fitlibrary/
<https://sourceforge.net/projects/fitlibrary/>

This release includes some new new capability and a fix. Changes include

the following. See the UserGuide included in the download zip file for
further details.

* FitLibrary now enables debugging when running storytests.
* CompareFileFixture now handles absolute file names as well as
relative file names.
* An empty tables cell may be interpreted as follows, depending on what
value the cell is expected to hold:
* An empty list, set, array, map
* A null value for an object, including Integer, etc
* FitLibrary accesses private getter/setters for properties. This
allows for setter injection without generally exposing properties.
* FitLibrary accesses private nullary constructors. This allows for
object creation without generally exposing the constructor.
* Use of HR to separate phases of DomainFixture
* The method that is called for a calculation rules may return an
object that's a subtype of the declared return type of the method. The
actual type of the result is used to check it against the expected value
* Fixed problem with a startUp() method being called more than once for
suite fixtures, etc.
* Lots of storytests have been added to check that exceptions are
caught correctly and nulls are handled correctly
* Experimental feature: If it exists, the method startCreatingObject()
of a domain adapter or sut is called when DomainFixture (and other
fixtures) automatically create an object; the object is passed as an
argument. This allows for specialised setup of the object before it has
property values automatically injected into it. The corresponding method

endCreatingObject() is called at the end of automatic injection.
* Experimental feature: A parse delegate may be specified for any type,
and so will be override any provided Parser for that type for the
duration of the storytest concerned.
* Experimental feature: A revised mechanism for supporting polymorhism
is included. I will later add support for tailoring the way that the
type is specified in the table. The documentation is still to be
completed.
* Only relevant to those who write their own fixtures: The
interpretation cycle passes extra type information; this is used in
FitLibrary2 to track the generic types of objects (which is missing at
runtime, due to ''erasure'' in Java). The way that Parsers are selected
has been changed considerably. Some class names have been changed, and
the package structure has changed in minor ways. FitLibraryServer has
changed considerably.

Cheers, Rick



 

 
Thank you for being part of it.
 
The information contained in this e-mail is confidential. This e-mail is intended only for the stated addressee.  If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. if you have received this e-mail in error, please inform us immediately and delete it and all copies from your system.

EBS Dealing Resources International Limited. Registered address: 2 Broadgate, London EC2M 7UR, United Kingdom. Registered number 2669861.

EBS Dealing Resources, Inc, registered in Delaware. Address: 535 Madison Avenue, 24th Floor, New York, NY 10022, USA, and One upper Pond road, Building F - Floor 3, Parsippany, NJ 07054, USA.

EBS Dealing Resources Japan Limited, a Japanese Corporation. Address: Asteer Kayabacho Bldg, 6th Floor, 1-6-1, Shinkawa, Chuo-Ku,  Tokyo 104-0033, Japan.


Parent Message unknown RE: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Helck, Christopher :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,
This is more difficult than I thought... Is there a way I can execute a
suite fixture in JUnit? It seems like FitLibraryServer is tightly
coupled to Fitnesse via FixtureBridge. I tried testing directly with
Fixture.doTables(), but this is not correct.
 
Anyway, my basic problem is that with the new release my tearDown()
method is being called at the start, and not the end of my tests.
 
Regards,
Christopher
 

________________________________

From: fitnesse@... [mailto:fitnesse@...] On
Behalf Of Helck, Christopher
Sent: Tuesday, January 02, 2007 11:31 AM
To: fitnesse@...
Subject: RE: [fitnesse] Announce: 20061230 release of FitLibrary in Java
for FitNesse



Hi Rick and other Fitnesse Folk,
 
The new release seems to fix many of the problems I had encountered with
the delta release. Many thanks.
 
I'm still having problems with setUp() and tearDown().
 
I have a SuiteFixture, DoFixture, and domain object called TdlSuite,
ProtocolFixture, and ProtocolModel. My DoFixture creates the domain
object in its constructor and reuses it as needed. I notice that the
domain object's setUp() and tearDown() methods are being called right
away immediately after my DoFixute is parsed. Is this the correct
behaviour?
 
I have these classes:
 
public class TdlSuite extends SuiteFixture {
  public Object protocol() {
    return new ProtocolFixture();
 }
...
}
 
public class ProtocolFixture extends DoFixture {
  public ProtocolFixture() {
    super(new ProtocolModel());
  }
 
  // More methods that return various Fixtures that wrap ProtocolModel.
  public Fixture configure { ... }
  ...
}
 
public class ProtocolModel {
  public void setUp() { ...}
  public void tearDown() {...}
 
  // Domain specific methods
  ...
}
 
My test looks like this:
 
|com.ebs.TdlSuite|
 
|select or | complete|
 
|keywords | complete|
 
|protocol|                 # Line 1
 
|configure|
|blah blah blah|
 
# Following tables are normal DoFixure stuff...
.
 
When the test runs the ProtocolModel's setUp/tearDown methods are both
being called right after Line 1 in the test. I was hoping that the
tearDown would be called when the ProtocolFixture went out of scope
(flow?). The obvious fix for me is to move the setup/teardown logic up
into the ProtocolFixture, but I wonder what your take is on this?
 
Happy New Year,
Chrsitopher Helck
 

________________________________

From: fitnesse@... [mailto:fitnesse@...] On
Behalf Of Rick Mugridge
Sent: Friday, December 29, 2006 7:14 PM
To: fitnesse@...
Subject: [fitnesse] Announce: 20061230 release of FitLibrary in Java for
FitNesse



That's available at https://sourceforge.net/projects/fitlibrary/
<https://sourceforge.net/projects/fitlibrary/>

This release includes some new new capability and a fix. Changes include

the following. See the UserGuide included in the download zip file for
further details.

* FitLibrary now enables debugging when running storytests.
* CompareFileFixture now handles absolute file names as well as
relative file names.
* An empty tables cell may be interpreted as follows, depending on what
value the cell is expected to hold:
* An empty list, set, array, map
* A null value for an object, including Integer, etc
* FitLibrary accesses private getter/setters for properties. This
allows for setter injection without generally exposing properties.
* FitLibrary accesses private nullary constructors. This allows for
object creation without generally exposing the constructor.
* Use of HR to separate phases of DomainFixture
* The method that is called for a calculation rules may return an
object that's a subtype of the declared return type of the method. The
actual type of the result is used to check it against the expected value
* Fixed problem with a startUp() method being called more than once for
suite fixtures, etc.
* Lots of storytests have been added to check that exceptions are
caught correctly and nulls are handled correctly
* Experimental feature: If it exists, the method startCreatingObject()
of a domain adapter or sut is called when DomainFixture (and other
fixtures) automatically create an object; the object is passed as an
argument. This allows for specialised setup of the object before it has
property values automatically injected into it. The corresponding method

endCreatingObject() is called at the end of automatic injection.
* Experimental feature: A parse delegate may be specified for any type,
and so will be override any provided Parser for that type for the
duration of the storytest concerned.
* Experimental feature: A revised mechanism for supporting polymorhism
is included. I will later add support for tailoring the way that the
type is specified in the table. The documentation is still to be
completed.
* Only relevant to those who write their own fixtures: The
interpretation cycle passes extra type information; this is used in
FitLibrary2 to track the generic types of objects (which is missing at
runtime, due to ''erasure'' in Java). The way that Parsers are selected
has been changed considerably. Some class names have been changed, and
the package structure has changed in minor ways. FitLibraryServer has
changed considerably.

Cheers, Rick



Thank you for being part of it.

The information contained in this e-mail is confidential. This e-mail is
intended only for the stated addressee. If you are not an addressee, you
must not disclose, copy, circulate or in any other way use or rely on
the information contained in this e-mail. if you have received this
e-mail in error, please inform us immediately and delete it and all
copies from your system.

 

EBS Dealing Resources International Limited. Registered address: 2
Broadgate, London EC2M 7UR, United Kingdom. Registered number 2669861.

 

EBS Dealing Resources, Inc, registered in Delaware. Address: 535 Madison
Avenue, 24th Floor, New York, NY 10022, USA, and One upper Pond road,
Building F - Floor 3, Parsippany, NJ 07054, USA.

 

EBS Dealing Resources Japan Limited, a Japanese Corporation. Address:
Asteer Kayabacho Bldg, 6th Floor, 1-6-1, Shinkawa, Chuo-Ku, Tokyo
104-0033, Japan.

 

 

Re: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Rick Mugridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Chris,

I've obviously missed some test cases. I'll look into it now.

Yes, SuiteFixture depends on FitLibraryServer being used. Look at the
code in fitlibrary.spec.SpecifySuiteFixture or
fitlibrary.debug.DebugPage to see how to use FitLibraryServer directly.

Cheers, Rick

Helck, Christopher wrote:

>
> Hi Rick and other Fitnesse Folk,
>  
> The new release seems to fix many of the problems I had encountered
> with the delta release. Many thanks.
>  
> I'm still having problems with setUp() and tearDown().
>  
> I have a SuiteFixture, DoFixture, and domain object called TdlSuite,
> ProtocolFixture, and ProtocolModel. My DoFixture creates the domain
> object in its constructor and reuses it as needed. I notice that the
> domain object's setUp() and tearDown() methods are being called right
> away immediately after my DoFixute is parsed. Is this the correct
> behaviour?
>  
> I have these classes:
>  
> public class TdlSuite extends SuiteFixture {
>   public Object protocol() {
>     return new ProtocolFixture();
>  }
> ...
> }
>  
> public class ProtocolFixture extends DoFixture {
>   public ProtocolFixture() {
>     super(new ProtocolModel());
>   }
>  
>   // More methods that return various Fixtures that wrap ProtocolModel.
>   public Fixture configure { ... }
>   ...
> }
>  
> public class ProtocolModel {
>   public void setUp() { ...}
>   public void tearDown() {...}
>  
>   // Domain specific methods
>   ...
> }
>  
> My test looks like this:
>  
> |com.ebs.TdlSuite|
>  
> |select or | complete|
>  
> |keywords | complete|
>  
> |protocol|                 # Line 1
>  
> |configure|
> |blah blah blah|
>  
> # Following tables are normal DoFixure stuff...
> .
>  
> When the test runs the ProtocolModel's setUp/tearDown methods are both
> being called right after Line 1 in the test. I was hoping that the
> tearDown would be called when the ProtocolFixture went out of scope
> (flow?). The obvious fix for me is to move the setup/teardown logic up
> into the ProtocolFixture, but I wonder what your take is on this?
>  
> Happy New Year,
> Chrsitopher Helck
>  
>
> ------------------------------------------------------------------------
> *From:* fitnesse@... [mailto:fitnesse@...] *On
> Behalf Of *Rick Mugridge
> *Sent:* Friday, December 29, 2006 7:14 PM
> *To:* fitnesse@...
> *Subject:* [fitnesse] Announce: 20061230 release of FitLibrary in Java
> for FitNesse
>
> That's available at https://sourceforge.net/projects/fitlibrary/ 
> <https://sourceforge.net/projects/fitlibrary/>
>
> This release includes some new new capability and a fix. Changes include
> the following. See the UserGuide included in the download zip file for
> further details.
>
> * FitLibrary now enables debugging when running storytests.
> * CompareFileFixture now handles absolute file names as well as
> relative file names.
> * An empty tables cell may be interpreted as follows, depending on what
> value the cell is expected to hold:
> * An empty list, set, array, map
> * A null value for an object, including Integer, etc
> * FitLibrary accesses private getter/setters for properties. This
> allows for setter injection without generally exposing properties.
> * FitLibrary accesses private nullary constructors. This allows for
> object creation without generally exposing the constructor.
> * Use of HR to separate phases of DomainFixture
> * The method that is called for a calculation rules may return an
> object that's a subtype of the declared return type of the method. The
> actual type of the result is used to check it against the expected value
> * Fixed problem with a startUp() method being called more than once for
> suite fixtures, etc.
> * Lots of storytests have been added to check that exceptions are
> caught correctly and nulls are handled correctly
> * Experimental feature: If it exists, the method startCreatingObject()
> of a domain adapter or sut is called when DomainFixture (and other
> fixtures) automatically create an object; the object is passed as an
> argument. This allows for specialised setup of the object before it has
> property values automatically injected into it. The corresponding method
> endCreatingObject() is called at the end of automatic injection.
> * Experimental feature: A parse delegate may be specified for any type,
> and so will be override any provided Parser for that type for the
> duration of the storytest concerned.
> * Experimental feature: A revised mechanism for supporting polymorhism
> is included. I will later add support for tailoring the way that the
> type is specified in the table. The documentation is still to be
> completed.
> * Only relevant to those who write their own fixtures: The
> interpretation cycle passes extra type information; this is used in
> FitLibrary2 to track the generic types of objects (which is missing at
> runtime, due to ''erasure'' in Java). The way that Parsers are selected
> has been changed considerably. Some class names have been changed, and
> the package structure has changed in minor ways. FitLibraryServer has
> changed considerably.
>
> Cheers, Rick
>
> Thank you for being part of it.
>
> The information contained in this e-mail is confidential. This e-mail
> is intended only for the stated addressee. If you are not an
> addressee, you must not disclose, copy, circulate or in any other way
> use or rely on the information contained in this e-mail. if you have
> received this e-mail in error, please inform us immediately and delete
> it and all copies from your system.
>
>  
>
> EBS Dealing Resources International Limited. Registered address: 2
> Broadgate, London EC2M 7UR, United Kingdom. Registered number 2669861.
>
>  
>
> EBS Dealing Resources, Inc, registered in Delaware. Address: 535
> Madison Avenue, 24th Floor, New York, NY 10022, USA, and One upper
> Pond road, Building F - Floor 3, Parsippany, NJ 07054, USA.
>
>  
>
> EBS Dealing Resources Japan Limited, a Japanese Corporation. Address:
> Asteer Kayabacho Bldg, 6th Floor, 1-6-1, Shinkawa, Chuo-Ku, Tokyo
> 104-0033, Japan.
>
>  
>
>  

Parent Message unknown RE: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Helck, Christopher :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Rick,
I created a unit test. There are three files:
 
MyTest.java is the unit test. It creates a html page and feeds it to
fitnesse.
MySuite.java is a simple SuiteFixture. One of its methods returns a
domain object called MyModel.
MyModel.java is the model.
Both MySuite and MyModel keep an audit trail of which of thier methods
have been called. After MyTest feeds the html to Fitnesse it looks at
the audit trail and compares it to what it exected. The expected order
of calls is:
 
MySuite.setUp(), MySuite.suite1(), MyModel.setUp(), MyModel.method1(),
MyModel.method2(), MyModel.tearDown(), MySuite.tearDown()
 
but instead I get
 
MySuite.setUp(), MySuite.suite1(), MyModel.setUp(), MyModel.tearDown(),
MyModel.method1(), MyModel.method2(),
 
Hope this helps.
Christopher
 


________________________________

From: fitnesse@... [mailto:fitnesse@...] On
Behalf Of Rick Mugridge
Sent: Tuesday, January 02, 2007 6:19 PM
To: fitnesse@...
Subject: Re: [fitnesse] Announce: 20061230 release of FitLibrary in Java
for FitNesse



Hi Chris,

I've obviously missed some test cases. I'll look into it now.

Yes, SuiteFixture depends on FitLibraryServer being used. Look at the
code in fitlibrary.spec.SpecifySuiteFixture or
fitlibrary.debug.DebugPage to see how to use FitLibraryServer directly.

Cheers, Rick

Helck, Christopher wrote:

       

        Hi Rick and other Fitnesse Folk,
         
        The new release seems to fix many of the problems I had
encountered with the delta release. Many thanks.
         
        I'm still having problems with setUp() and tearDown().
         
        I have a SuiteFixture, DoFixture, and domain object called
TdlSuite, ProtocolFixture, and ProtocolModel. My DoFixture creates the
domain object in its constructor and reuses it as needed. I notice that
the domain object's setUp() and tearDown() methods are being called
right away immediately after my DoFixute is parsed. Is this the correct
behaviour?
         
        I have these classes:
         
        public class TdlSuite extends SuiteFixture {
          public Object protocol() {
            return new ProtocolFixture();
         }
        ...
        }
         
        public class ProtocolFixture extends DoFixture {
          public ProtocolFixture() {
            super(new ProtocolModel());
          }
         
          // More methods that return various Fixtures that wrap
ProtocolModel.
          public Fixture configure { ... }
          ...
        }
         
        public class ProtocolModel {
          public void setUp() { ...}
          public void tearDown() {...}
         
          // Domain specific methods
          ...
        }
         
        My test looks like this:
         
        |com.ebs.TdlSuite|
         
        |select or | complete|
         
        |keywords | complete|
         
        |protocol|                 # Line 1
         
        |configure|
        |blah blah blah|
         
        # Following tables are normal DoFixure stuff...
        .
         
        When the test runs the ProtocolModel's setUp/tearDown methods
are both being called right after Line 1 in the test. I was hoping that
the tearDown would be called when the ProtocolFixture went out of scope
(flow?). The obvious fix for me is to move the setup/teardown logic up
into the ProtocolFixture, but I wonder what your take is on this?
         
        Happy New Year,
        Chrsitopher Helck
         

________________________________

        From: fitnesse@... [mailto:fitnesse@...]
On Behalf Of Rick Mugridge
        Sent: Friday, December 29, 2006 7:14 PM
        To: fitnesse@...
        Subject: [fitnesse] Announce: 20061230 release of FitLibrary in
Java for FitNesse
       
       

        That's available at https://sourceforge.net/projects/fitlibrary/
<https://sourceforge.net/projects/fitlibrary/>
       
        This release includes some new new capability and a fix. Changes
include
        the following. See the UserGuide included in the download zip
file for
        further details.
       
        * FitLibrary now enables debugging when running storytests.
        * CompareFileFixture now handles absolute file names as well as
        relative file names.
        * An empty tables cell may be interpreted as follows, depending
on what
        value the cell is expected to hold:
        * An empty list, set, array, map
        * A null value for an object, including Integer, etc
        * FitLibrary accesses private getter/setters for properties.
This
        allows for setter injection without generally exposing
properties.
        * FitLibrary accesses private nullary constructors. This allows
for
        object creation without generally exposing the constructor.
        * Use of HR to separate phases of DomainFixture
        * The method that is called for a calculation rules may return
an
        object that's a subtype of the declared return type of the
method. The
        actual type of the result is used to check it against the
expected value
        * Fixed problem with a startUp() method being called more than
once for
        suite fixtures, etc.
        * Lots of storytests have been added to check that exceptions
are
        caught correctly and nulls are handled correctly
        * Experimental feature: If it exists, the method
startCreatingObject()
        of a domain adapter or sut is called when DomainFixture (and
other
        fixtures) automatically create an object; the object is passed
as an
        argument. This allows for specialised setup of the object before
it has
        property values automatically injected into it. The
corresponding method
        endCreatingObject() is called at the end of automatic injection.
        * Experimental feature: A parse delegate may be specified for
any type,
        and so will be override any provided Parser for that type for
the
        duration of the storytest concerned.
        * Experimental feature: A revised mechanism for supporting
polymorhism
        is included. I will later add support for tailoring the way that
the
        type is specified in the table. The documentation is still to be
completed.
        * Only relevant to those who write their own fixtures: The
        interpretation cycle passes extra type information; this is used
in
        FitLibrary2 to track the generic types of objects (which is
missing at
        runtime, due to ''erasure'' in Java). The way that Parsers are
selected
        has been changed considerably. Some class names have been
changed, and
        the package structure has changed in minor ways.
FitLibraryServer has
        changed considerably.
       
        Cheers, Rick
       
       

       

        Thank you for being part of it.

       

        The information contained in this e-mail is confidential. This
e-mail is intended only for the stated addressee. If you are not an
addressee, you must not disclose, copy, circulate or in any other way
use or rely on the information contained in this e-mail. if you have
received this e-mail in error, please inform us immediately and delete
it and all copies from your system.

       

         

        EBS Dealing Resources International Limited. Registered address:
2 Broadgate, London EC2M 7UR, United Kingdom. Registered number 2669861.

       

         

        EBS Dealing Resources, Inc, registered in Delaware. Address: 535
Madison Avenue, 24th Floor, New York, NY 10022, USA, and One upper Pond
road, Building F - Floor 3, Parsippany, NJ 07054, USA.

       

         

        EBS Dealing Resources Japan Limited, a Japanese Corporation.
Address: Asteer Kayabacho Bldg, 6th Floor, 1-6-1, Shinkawa, Chuo-Ku,
Tokyo 104-0033, Japan.

         

 

 
 
 

MyModel.java (600 bytes) Download Attachment
MySuite.java (946 bytes) Download Attachment
MyTest.java (2K) Download Attachment

Re: Announce: 20061230 release of FitLibrary in Java for FitNesse

by Rick Mugridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Chris,

I had a good look at this yesterday and started to implement a fix. Then
I thought about the complex cases, where several fixtures share the same
SUTs, and some also have setUp()/tearDown() methods. It gets complex as
to what setUp() and tearDown() mean, and especially when such SUTs are
shared between SuiteFixtures and DoFixtures. It gets complex to describe
what happens, introducing much more complexity than the feature deserves.

This is another case where it's easy to miss the potential interactions
between two distinct features of a design. I've noticed before that the
major problems arise in the gaps between stories, especially when there
is a reasonable time between when they're chosen and implemented.

That got me thinking about having whether it was wise to have FitLibrary
calling specialised methods like setUp() in SUT (POJ) classes (ie, not
fixture, traverses nor domain adapters). In retrospect, it's not a good
idea, so I will change that, as those methods are fundamentally
concerned with fixturing. Hopefully, it won't affect too much existing
fixture code.

So the outcome, which I will finish now, is that setUp() and tearDown()
will not take account of shared objects. So if two fixture objects,
without setUp()/tearDown(), refer to the same domain adapter that has
setUp()/tearDown(), the methods are called in the wrong order, because
the tearDown() is called on the second table's fixture. That's what
you've seen. The solution is to move the setUp()/tearDown() methods into
the fixtures, or to not share domain adapters between them and to
introduce a second level of domain adapter.

I will also consider calling instead the methods suiteSetUp() and
suiteTearDown() for suite fixtures, to at least disambiguate that case.

I will add a note on this to the UserGuide.

Cheers, Rick

Helck, Christopher wrote:

>
> Hi Rick,
> I created a unit test. There are three files:
>  
> MyTest.java is the unit test. It creates a html page and feeds it to
> fitnesse.
> MySuite.java is a simple SuiteFixture. One of its methods returns a
> domain object called MyModel.
> MyModel.java is the model.
> Both MySuite and MyModel keep an audit trail of which of thier methods
> have been called. After MyTest feeds the html to Fitnesse it looks at
> the audit trail and compares it to what it exected. The expected order
> of calls is:
>  
> MySuite.setUp(), MySuite.suite1(), MyModel.setUp(), MyModel.method1(),
> MyModel.method2(), MyModel.tearDown(), MySuite.tearDown()
>  
> but instead I get
>  
> MySuite.setUp(), MySuite.suite1(), MyModel.setUp(),
> MyModel.tearDown(), MyModel.method1(), MyModel.method2(),
>  
> Hope this helps.
> Christopher
>  
>
> ------------------------------------------------------------------------
> *From:* fitnesse@... [mailto:fitnesse@...] *On
> Behalf Of *Rick Mugridge
> *Sent:* Tuesday, January 02, 2007 6:19 PM
> *To:* fitnesse@...
> *Subject:* Re: [fitnesse] Announce: 20061230 release of FitLibrary in
> Java for FitNesse
>
> Hi Chris,
>
> I've obviously missed some test cases. I'll look into it now.
>
> Yes, SuiteFixture depends on FitLibraryServer being used. Look at the
> code in fitlibrary.spec.SpecifySuiteFixture or
> fitlibrary.debug.DebugPage to see how to use FitLibraryServer directly.
>
> Cheers, Rick
>
> Helck, Christopher wrote:
>
>> Hi Rick and other Fitnesse Folk,
>>  
>> The new release seems to fix many of the problems I had encountered
>> with the delta release. Many thanks.
>>  
>> I'm still having problems with setUp() and tearDown().
>>  
>> I have a SuiteFixture, DoFixture, and domain object called TdlSuite,
>> ProtocolFixture, and ProtocolModel. My DoFixture creates the domain
>> object in its constructor and reuses it as needed. I notice that the
>> domain object's setUp() and tearDown() methods are being called right
>> away immediately after my DoFixute is parsed. Is this the correct
>> behaviour?
>>  
>> I have these classes:
>>  
>> public class TdlSuite extends SuiteFixture {
>>   public Object protocol() {
>>     return new ProtocolFixture();
>>  }
>> ...
>> }
>>  
>> public class ProtocolFixture extends DoFixture {
>>   public ProtocolFixture() {
>>     super(new ProtocolModel());
>>   }
>>  
>>   // More methods that return various Fixtures that wrap ProtocolModel.
>>   public Fixture configure { ... }
>>   ...
>> }
>>  
>> public class ProtocolModel {
>>   public void setUp() { ...}
>>   public void tearDown() {...}
>>  
>>   // Domain specific methods
>>   ...
>> }
>>  
>> My test looks like this:
>>  
>> |com.ebs.TdlSuite|
>>  
>> |select or | complete|
>>  
>> |keywords | complete|
>>  
>> |protocol|                 # Line 1
>>  
>> |configure|
>> |blah blah blah|
>>  
>> # Following tables are normal DoFixure stuff...
>> .
>>  
>> When the test runs the ProtocolModel's setUp/tearDown methods are
>> both being called right after Line 1 in the test. I was hoping that
>> the tearDown would be called when the ProtocolFixture went out of
>> scope (flow?). The obvious fix for me is to move the setup/teardown
>> logic up into the ProtocolFixture, but I wonder what your take is on
>> this?
>>  
>> Happy New Year,
>> Chrsitopher Helck
>>  
>>
>> ------------------------------------------------------------------------
>> *From:* fitnesse@... [mailto:fitnesse@...]
>> *On Behalf Of *Rick Mugridge
>> *Sent:* Friday, December 29, 2006 7:14 PM
>> *To:* fitnesse@...
>> *Subject:* [fitnesse] Announce: 20061230 release of FitLibrary in
>> Java for FitNesse
>>
>> That's available at https://sourceforge.net/projects/fitlibrary/ 
>> <https://sourceforge.net/projects/fitlibrary/>
>>
>> This release includes some new new capability and a fix. Changes include
>> the following. See the UserGuide included in the download zip file for
>> further details.
>>
>> * FitLibrary now enables debugging when running storytests.
>> * CompareFileFixture now handles absolute file names as well as
>> relative file names.
>> * An empty tables cell may be interpreted as follows, depending on what
>> value the cell is expected to hold:
>> * An empty list, set, array, map
>> * A null value for an object, including Integer, etc
>> * FitLibrary accesses private getter/setters for properties. This
>> allows for setter injection without generally exposing properties.
>> * FitLibrary accesses private nullary constructors. This allows for
>> object creation without generally exposing the constructor.
>> * Use of HR to separate phases of DomainFixture
>> * The method that is called for a calculation rules may return an
>> object that's a subtype of the declared return type of the method. The
>> actual type of the result is used to check it against the expected value
>> * Fixed problem with a startUp() method being called more than once for
>> suite fixtures, etc.
>> * Lots of storytests have been added to check that exceptions are
>> caught correctly and nulls are handled correctly
>> * Experimental feature: If it exists, the method startCreatingObject()
>> of a domain adapter or sut is called when DomainFixture (and other
>> fixtures) automatically create an object; the object is passed as an
>> argument. This allows for specialised setup of the object before it has
>> property values automatically injected into it. The corresponding method
>> endCreatingObject() is called at the end of automatic injection.
>> * Experimental feature: A parse delegate may be specified for any type,
>> and so will be override any provided Parser for that type for the
>> duration of the storytest concerned.
>> * Experimental feature: A revised mechanism for supporting polymorhism
>> is included. I will later add support for tailoring the way that the
>> type is specified in the table. The documentation is still to be
>> completed.
>> * Only relevant to those who write their own fixtures: The
>> interpretation cycle passes extra type information; this is used in
>> FitLibrary2 to track the generic types of objects (which is missing at
>> runtime, due to ''erasure'' in Java). The way that Parsers are selected
>> has been changed considerably. Some class names have been changed, and
>> the package structure has changed in minor ways. FitLibraryServer has
>> changed considerably.
>>
>> Cheers, Rick
>>
>> Thank you for being part of it.
>>
>> The information contained in this e-mail is confidential. This e-mail
>> is intended only for the stated addressee. If you are not an
>> addressee, you must not disclose, copy, circulate or in any other way
>> use or rely on the information contained in this e-mail. if you have
>> received this e-mail in error, please inform us immediately and
>> delete it and all copies from your system.
>>
>>  
>>
>> EBS Dealing Resources International Limited. Registered address: 2
>> Broadgate, London EC2M 7UR, United Kingdom. Registered number 2669861.
>>
>>  
>>
>> EBS Dealing Resources, Inc, registered in Delaware. Address: 535
>> Madison Avenue, 24th Floor, New York, NY 10022, USA, and One upper
>> Pond road, Building F - Floor 3, Parsippany, NJ 07054, USA.
>>
>>  
>>
>> EBS Dealing Resources Japan Limited, a Japanese Corporation. Address:
>> Asteer Kayabacho Bldg, 6th Floor, 1-6-1, Shinkawa, Chuo-Ku, Tokyo
>> 104-0033, Japan.
>>
>>  
>>
>