Plexus Testing
Library to help testing plexus components
Example usage
Test class
import javax.inject.Inject;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@PlexusTest
class PlexusTestJavaxTest {
@Inject
private TestJavaxComponent testJavaxComponent;
@Test
void dependencyShouldBeInjected() {
assertNotNull(testJavaxComponent);
assertNotNull(testJavaxComponent.getTestComponent2());
}
}
Customization of the Plexus Container
Test class can customize the Plexus Container used for testing by implementing
the PlexusTestConfiguration.
All methods have default empty implementations so you can implement only the ones you need.
import javax.inject.Inject;
import org.codehaus.plexus.PlexusContainer;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertSame;
// MockitoExtension must be first
@ExtendWith(MockitoExtension.class)
@PlexusTest
class PlexusTestCustomizeTest implements PlexusTestConfiguration {
@Mock
private TestJavaxComponent2 mockComponent2;
/*
Customize the container configuration before it is used to create the container.
Method has default empty implementation so not need to implement if not used.
@Override
public void customizeConfiguration(ContainerConfiguration containerConfiguration) {
}
*/
@Override
public void customizeContainer(PlexusContainer container) {
container.addComponent(mockComponent2, TestJavaxComponent2.class.getName());
}
@Inject
private TestJavaxComponent testJavaxComponent;
@Test
void dependencyShouldBeInjected() {
assertNotNull(testJavaxComponent);
assertSame(testJavaxComponent.getTestComponent2(), mockComponent2);
}
}
Used classes in test
import javax.inject.Inject;
import javax.inject.Named;
@Named
public class TestJavaxComponent {
@Inject
private TestJavaxComponent2 testJavaxComponent2;
public TestJavaxComponent2 getTestComponent2() {
return testJavaxComponent2;
}
}
import javax.inject.Named;
@Named
public class TestJavaxComponent2 {}


