So are you agreeing that there is currently no framework that can
currently do round-trip testing as I've described it?  Or am I missing
something?

Just trying to get a practical answer. ;-)

- Brendan

P.S. We *are* using delegates, DAO factories, etc.  It just would be
nice to be able to test our code from the Action method once those
delegates have been filled in and are no longer stubs.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] 
Sent: Thursday, February 16, 2006 8:57 AM
To: user@struts.apache.org
Subject: RE: [SHALE] Using the Test Framework


What Cactus does is allow your test code to run from within the
container, controlled by the same test code outside the container.  It
connects the two with a proxy arrangement.  It can call anything in your
code or available to your code.

Cactus *is* a PITA to work with, and complicated to think about, IMHO.
I've gotten away from using it in recent years by abstracting interfaces
that might need to do things like JNDI lookups and providing mock
versions for out-of-container testing.  In my experience, it things are
hard to test, it generally indicates design issues.  Usually the
dependency chains are long and concrete.  Constructs like a Business
Delegate or Abstract DAO Factory help break up the dependencies.

Recommended reading:

"The Dependency Inversion Principle" by Robert C. Martin
(http://www.objectmentor.com/resources/articles/dip.pdf)

"Patterns of Enterprise Application Architecture" by Martin Fowler
(http://www.amazon.com/exec/obidos/ASIN/0321127420/alberg30-20)

 - George Dinwiddie
   http://idiacomputing.com/moin/FavoriteBooks



> -----Original Message-----
> From: CONNER, BRENDAN (SBCSI) [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, February 15, 2006 5:55 PM
> To: Struts Users Mailing List
> Subject: RE: [SHALE] Using the Test Framework
> 
> 
> I think Cactus works OK with JNDI lookups, etc., since it's 
> just a Servlet.  However, I think it falls apart when trying 
> to reference stuff like FacesContext.getInstance(), since 
> we're not in the middle of an actual JSF life cycle event.
> 
> So my quandary seems to be that, for round trip testing 
> starting at an Action method:
> 
> 1. I can't use the Shale Test Framework, because it would 
> fail when doing EJB calls. 2. I can't use Cactus, because it 
> would fail when trying to do FacesContext.getInstance(). 3. 
> Because of the above, there is no standard testing framework 
> to use for this type of testing.
> 
> Is that a fair assessment?  I'm not complaining; I'm just 
> trying to verify my understanding.
> 
> - Brendan
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On 
> Behalf Of Craig McClanahan
> Sent: Wednesday, February 15, 2006 4:49 PM
> To: Struts Users Mailing List
> Subject: Re: [SHALE] Using the Test Framework
> 
> 
> On 2/15/06, CONNER, BRENDAN (SBCSI) <[EMAIL PROTECTED]> wrote:
> >
> > But let's say my test executes an action method on my application's 
> > managed bean.  That method uses the mock objects and then tries to
> call
> > a Session Bean to do a lookup, but it appears that the lookup fails 
> > because the action method is not really running in a Web Container, 
> > correct?  Is this all happening in stand-alone application 
> mode?  How 
> > can I set up my test to run in a Web Container so that it has access
> to
> > JNDI lookups, etc.?  Do I have to use Cactus for that?
> 
> 
> It should be possible to use Cactus for that kind of testing, 
> but I've never looked how Cactus deals with JNDI lookups or 
> session beans.
> 
> - Brendan
> 
> 
> Craig
> 
> -----Original Message-----
> > From: Gary VanMatre [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, February 14, 2006 2:22 PM
> > To: Struts Users Mailing List
> > Subject: RE: [SHALE] Using the Test Framework
> >
> >
> > >From: "CONNER, BRENDAN (SBCSI)" <[EMAIL PROTECTED]>
> > >
> > > OK, sorry for being a little dense about this, but, if, 
> for example,
> > my
> > > application code is referencing a FacesContext object, and my Test
> > code
> > > initializes MockFacesContext, what is the mechanism that makes my 
> > > application use the values that are in MockFacesContext? I
> understand
> > > that MockFacesContext is a subclass of FacesContext, but I don't 
> > > understand how my application ends up using the values in the 
> > > MockFacesContext instance instead that were initialized 
> by the test 
> > > case.
> > >
> >
> > The idea is that you extend a base test case that sets up the mock 
> > objects.  They are scoped so that they can be referenced from test 
> > methods in a subclass.
> >
> > Take a look at the AbstractJsfTestCase
> >
> (http://svn.apache.org/viewcvs.cgi/struts/shale/trunk/test-fra
mework/src
> /java/org/apache/shale/test/base/AbstractJsfTestCase.java?view=markup)
>
>
>
>
> > - Brendan
> >
>
> Gary
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to