Hi,

Some time ago I had added the AbstractMockingComponentTestCase class in 
shared-test. I've refactored it a bit over the week end to make it even easier 
to use.

The idea is to use a @MockingRequirement annotation in the test case class to 
get a component instance with all its @Requirement fields injected with mocks.

This makes it easier to test than using the older AbstractComponentTestCase 
since you don't need to setup component mocks manually.

Here's an example usage:

public class MacroContentTableBlockDataSourceTest extends 
AbstractMockingComponentTestCase
{
    @MockingRequirement
    private MacroContentTableBlockDataSource source;
...

Another example:

public class DefaultMacroManagerTest extends AbstractMockingComponentTestCase
{
    // Mock all required components except for some for which we want to use 
the real implementations since they make
    // the test easier to write (no need to mock them).
    @MockingRequirement(exceptions = { ComponentManager.class, 
MacroIdFactory.class })
    private DefaultMacroManager macroManager;

As you can see in this second example, it's also possible to exclude some 
@Requirement from being mocked if need be.

I'd like that we agree to use this new test class from now on instead of 
AbstractComponentTestCase (unless there are cases where it's not usable but 
please discuss those use cases with me since maybe there are solutions to 
improve AbstractMockingComponentTestCase).

Here's my +1

Thanks
-Vincent

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to