Alex, I feel the wiki you post is too complex to write a unit case.
If I understand correctly, the whole purpose about configuration.xml and "test
configuration" class is to load components needed by unit test case.
>From a programmer's perspective, all things I think are necessary to do is
>like below:
@Before
public void setup() throws Exception {
ComponentContext.setComponentsToLoad(Class<?>[] {
SecurityGroupRulesDaoImpl.class,
UserVmDaoImpl.class,
AccountDaoImpl.class,});
ComponentContext. initComponentsLifeCycle();
}
For these mock component, test case itself should know where to get it, for
example, by calling Mockito.mock().
To achieve this, ComponentContext needs below enhancements:
1. add method setComponentsToLoad() that receives a list of Class<?> of
components
2. save configuration.xml to a well-know place in classpath. The content of
configuration.xml is 99% the same as you post, except removing:
<bean id="TestConfiguration"
class="[Test Configuration]" />
then the file works as a template for Spring beans.
3. ComponentContext generates a new xml file from configuration.xml template
when initComponentsLifeCycle() gets called, the new xml file would contain
all bean declarations for classes specified in setComponentsToLoad(). as
aforementioned example, the new generated xml will contain extra 3 items like
<bean name="SecurityGroupRulesDaoImpl" class="full_class_name_of_
SecurityGroupRulesDaoImpl" />
<bean name=" UserVmDaoImpl " class="full_class_name_of_UserVmDaoImpl" />
<bean name=" AccountDaoImpl " class="full_class_name_of_AccountDaoImpl " />
4. save the new xml file generated in step 3 to root class path of unit test
case with a new name. For standard maven it is test/target/test-classes/, but I
didn't see this hierarchy in our
code base, let's assume the path is test/classes/. So the new xml file would be
saved as:
test/classes/spring_configuration_for_test_case_xxx.xml
5. create Spring ApplicationContext using the new generated configuration file
in initComponentsLifeCycle().
6. don't use @ContextConfiguration(locations =
"classpath:/[configuration.xml]") as we use dynamic Spring configuration
> -----Original Message-----
> From: Alex Huang [mailto:[email protected]]
> Sent: Friday, January 25, 2013 10:25 AM
> To: [email protected]
> Subject: RE: Writing unit tests after javelin is merged in.
>
> Hi Howie,
>
> Thanks for the offer to help. I believe we finally converted all tests
> yesterday
> but turns out the tests are not running because they've been disabled on
> master branch due to no db access on the build machines.
>
> The code is on javelin on asf. You're welcome to peruse and make any
> suggestions about how we're using spring in the unit tests. Would love to
> find a way to stop creating 3 different files for every unit test.
>
> Thanks again.
>
> --Alex
>
> > -----Original Message-----
> > From: Howie Yu [mailto:[email protected]]
> > Sent: Thursday, January 24, 2013 5:28 PM
> > To: [email protected]
> > Subject: Re: Writing unit tests after javelin is merged in.
> >
> > Hi Alex
> >
> > I would like to help~
> >
> > But which repository should I use? Form github's javelin or asf's javelin ?
> >
> >
> > On 13/1/25 上午8:17, "Alex Huang" <[email protected]> wrote:
> >
> > >I wrote up a page on how to write unit tests after the Spring
> > >injection framework is in. Please see here.
> > >
> > >https://cwiki.apache.org/confluence/display/CLOUDSTACK/Unit+Testing
> +
> > with+J
> > >Unit+and+Spring
> > >
> > >We also need help in javelin to finish converting the unit tests over
> > >to this format. If you can help, let me know.
> > >
> > >Thanks.
> > >
> > >--Alex
> > >
> > >
> >
> >
> > <table class="TM_EMAIL_NOTICE"><tr><td><pre>
> > TREND MICRO EMAIL NOTICE
> > The information contained in this email and any attachments is
> > confidential and may be subject to copyright or other intellectual property
> protection.
> > If you are not the intended recipient, you are not authorized to use
> > or disclose this information, and we request that you notify us by
> > reply mail or telephone and delete the original message from your mail
> system.
> > </pre></td></tr></table>