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 {}