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

Reply via email to