Brendan, I think the upshot of all this is that you *may* be able to use
the Shale test framework to mock out the JSF side of things, but run the
resulting tests using Cactus so you still get the container
functionality you need. However, it's not something anyone's done so it
may or may not work in practice.
That said, I think you'd be over-complicating your testing strategy to
the point of diminishing returns. You'd effectively be building a hybrid
integration testing / unit testing solution.
You'd probably be much better served by taking a functional testing
approach using something like, as Craig suggested, HtmlUnit or Cannoo.
I'd also recommend taking a look at Selenium [1]; I haven't used it yet,
but it looks very promising, depending on your needs.
L.
[1] http://www.openqa.org/selenium/
CONNER, BRENDAN (SBCSI) wrote:
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]