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