On Mon, Jul 9, 2012 at 10:34 AM, Vincent Massol <[email protected]> wrote: > > On Jul 9, 2012, at 9:38 AM, Thomas Mortagne wrote: > >> On Mon, Jul 9, 2012 at 9:32 AM, Vincent Massol <[email protected]> wrote: >>> Hi devs, >>> >>> Over the weekend I've brought one change to xwiki-commons-test. >>> >>> Now by default when you write a unit test that extends >>> AbstractMockingComponentTestCase there will be no component registered >>> against the component manager except those mocked automatically by the >>> @MockingRequirement annotation. >>> >>> This has 2 advantages: >>> * This is the spirit of AbstractMockingComponentTestCase since they're >>> supposed to mock all dependencies and define their behaviors >>> * It makes the tests up to 10 times faster >>> >>> If you really need to register some components, use the {@link >>> ComponentList} annotation and if you really really need to register all >>> components (it takes time) then use {@link AllComponents}. >> >> Do we really need to support loading all components in >> AbstractMockingComponentTestCase since there is >> AbstractComponentTestCase for that ? > > I have migrated all tests using AbstractMockingComponentTestCase and if you > check the commits you'll see I've used @AllComponents in several places. I > started adding the component implementations one by one but when I reached 10 > or so I stopped doing it, removed the list and instead used @AllComponents. > > What this means is that the unit test is not correctly written and it needs > to be modified. > > So yes @AllComponent should not be used in general and once we have fixed > existing tests we can remove it. We could revisit existing tests using > @AllComponents and instead use @ComponentList even if there are 20 entries in > it and then remove @AllComponent. I didn't have the courage to do this > yesterday since I already spent a substantial time on this. > > Also note that AbstractMockingComponentTestCase and AbstractComponentTestCase > are for different needs: > * AbstractMockingComponentTestCase is for writing unit tests > * AbstractComponentTestCase is for writing integration tests
The real difference between then is that AbstractComponentTestCase is loading all components which is why I suggested to use it if you need to load all components. > > Thanks > -Vincent > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

