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