Annotation Interface MojoTest


@Retention(RUNTIME) @ExtendWith(MojoExtension.class) @Target(TYPE) public @interface MojoTest
Annotation that enables Maven plugin (Mojo) testing support in JUnit tests. When applied to a test class, it automatically sets up the testing environment for Maven plugins, including dependency injection and parameter resolution.

This annotation works in conjunction with InjectMojo and MojoParameter to provide a comprehensive testing framework for Maven plugins. It automatically registers the MojoExtension which handles the plugin lifecycle and dependency injection.

Example usage:


@MojoTest
class MyMojoTest {
    @Inject
    private SomeComponent component;

    @Test
    @InjectMojo(goal = "my-goal")
    @MojoParameter(name = "parameter", value = "value")
    void testMojoExecution(MyMojo mojo) {
        // mojo is instantiated with the specified parameters
        // component is automatically injected
        mojo.execute();
        // verify execution results
    }

    @Provides
    @Singleton
    SomeComponent provideMockedComponent() {
        return mock(SomeComponent.class);
    }
}

The annotation supports:

  • Automatic Mojo instantiation and configuration
  • Parameter injection via MojoParameter
  • Component injection via Inject
  • Mock component injection via Provides
  • Custom POM configuration via InjectMojo.pom()
  • Base directory configuration for test resources

This annotation replaces the legacy maven-plugin-testing-harness functionality with a modern, annotation-based approach that integrates with JUnit Jupiter and Maven's new dependency injection framework.

Since:
4.0.0
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    boolean
    If true, the test harness will provide a real Maven Session created by ApiRunner.createSession(), instead of the default mock session.
  • Element Details

    • realSession

      boolean realSession
      If true, the test harness will provide a real Maven Session created by ApiRunner.createSession(), instead of the default mock session. Default is false.
      Default:
      false