Testing Multiproject
NOTE
Note: This example improves the cookbook for multi-project testing.
Your Mojo should have aggregator parameter set to true - Maven Plugin Tools Java Annotations
@Mojo(name = "touch", aggregator = true)
public class MyMojo extends AbstractMojo {
...
}
To test a Mojo in a multiproject area, you need to define several stubs, i.e. for the main test project and its modules.
Configure Mian project and create Stubs for the sub projects
import org.apache.maven.api.plugin.testing.MojoTest;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.mockito.Mockito;
@MojoTest
class AggregateTest {
@Inject
private MavenProject project;
@Inject
private MavenSession session;
@BeforeEach
void setup() {
// Configure the main project as execution root
project.setExecutionRoot(true);
MavenProject stub1 = new MavenProject();
// configure stub1 as needed
MavenProject stub2 = new MavenProject();
// configure stub2 as needed
// return all projects in the reactor - reactorProjects
Mockito.when(session.getProjects()).thenReturn(Arrays.asList(project, stub1, stub2));
}
@Test
@Basedir("/unit/aggregate-test")
@InjectMojo(goal = "aggregate")
void aggregate(AggregatorMojo mojo) throws Exception {
mojo.execute();
// Verify behavior across all projects
}
}



