Another package used in testing is spring's mock servlet package
'org.springframework.mock.web'. (http://bit.ly/4zEAJF)
Mockito intercepts calls with interception setup and checking in junit test.
Very general purpose and can be used for servlets, delegators etc. Downside is
that a parameter from a ServletRequest can be obtained many
ways(getParameterMap, getParameterValues, getParameter etc.) and sometimes not
worth trying to cover all ways.
Mock Servlets allow tests to create your own request and session, then create
your context and then call whatever you need to - service, groovy, screen
render etc. and check results. Easier setup but less general.
The trick to running multiple tests together was to hold on to hold on to
singleton instance of 'Start' and intialize only if needed in base class of all
tests
your top level test case class
{
...
static Start start;
@Override
protected void setUp() throws Exception {
if (start == null) {
...
start = new Start();
start.init(new String[]{"test"});
...
new EntityConfigUtil().start();
}
...
}
...
}
Harmeet
----- Original Message -----
From: "Robert Morley" <[email protected]>
To: [email protected]
Sent: Tuesday, November 10, 2009 11:31:39 PM GMT -05:00 US/Canada Eastern
Subject: Re: OFBiz Tests and Ant build.xml Files
Adrian --
While this is probably not the best practice, what we have done is create a set
of abstract base classes that extend the JUnit test case. Depending on the
architectural layer we are testing, these may just provide some helper methods
or they may start the container and allow us to run the JUnit from in Eclipse.
The penalty we pay on the longer running tests is usually around 15 seconds or
so; but it does allow us to run a whole suite of test cases in Eclipse with
only the container start-up penalty.
In an effort to focus specifically on the business logic in service
implementations, we have also made some use of Mockito. The
"StandaloneMockTestCase" that we extend here avoids starting up the container
and allows us to mock out both the delegator and dispatcher. This provided
very targeted unit tests (usually as part of code coverage metrics) while
mocking out external dependencies. If at all interested, I created a JIRA
ticket and attached some source that displayed this technique.
What we have not done is figure out how to integrate our unit tests with the
standard ones in JUnit and have them all run as part of our automated build
scripts. Currently, we only run our own unit tests. We also have not done
enough work building up TestSuites at the various architectural layers as well
as for each component.
To be honest, I am unsure if we are even doing this in the best possible way.
I started out trying to create debug configurations that would execute specific
unit tests / component tests with the arguments to Start but I found it rather
tedious. Moreover, it did not allow us to leverage the good tooling in the IDE.
----- Original Message -----
From: Adrian Crum <[email protected]>
To: [email protected]
Sent: Sat, 7 Nov 2009 02:08:54 -0500 (EST)
Subject: Re: OFBiz Tests and Ant build.xml Files
Mridul,
Thank you! I have to confess, I don't use the command line often (actually
never). I was referring to running tests from within Eclipse. But I'll give
your suggestion a try!
-Adrian
--- On Fri, 11/6/09, Mridul Pathak <[email protected]> wrote:
> From: Mridul Pathak <[email protected]>
> Subject: Re: OFBiz Tests and Ant build.xml Files
> To: [email protected]
> Cc: "Mridul Pathak" <[email protected]>
> Date: Friday, November 6, 2009, 8:22 PM
> Hi Adrian,
>
> To run a component specific JUnit tests you
> can use java -jar ofbiz.jar -test
> -component='component-name'. I used it a long ago and
> I can recall pretty surely that it worked. And if this
> works, I believe ant run-tests -component='component-name'
> should also work.
> Just in case the above commands do not work
> (which I doubt) then we should add this support to the
> framework.
>
> --
> Thanks,
> Mridul Pathak
>
> On 07-Nov-09, at 8:28 AM, Adrian Crum wrote:
>
> > I've been working a lot in the framework, and I would
> like to get some automated tests in there. The problem is,
> there is no "test" ant target at the component level. Is
> there a way that can be done? I'm not familiar with ant
> build.xml files, so could someone help out with that?
> >
> > -Adrian
> >
> >
> >
> >
>
>