If just plain unit testing is needed without JEE APIs it's possible to use the AbstractCdiAwareTest
@RunWith(JUnit4.class)
public class SimpleJUnitTest extends org.apache.myfaces.extensions.cdi.test.junit4.AbstractCdiAwareTest
{
@Inject
private Logger logger;
@Test
public void testLogger()
{
assertNotNull(this.logger);
this.logger.info("I'm a JUnit test-case and I can use dependency injection!");
}
}
|
If it's required to test e.g. request scoped beans it's possible to use the AbstractServletAwareTest
@RunWith(JUnit4.class)
public class SimpleJUnitTest extends org.apache.myfaces.extensions.cdi.test.junit4.AbstractServletAwareTest
{
@Inject
private RequestScopedBean requestScopedBean;
@Test
public void testLogger()
{
assertNotNull(this.requestScopedBean.getValue());
}
}
|
If it's required to test e.g. grouped conversation scoped beans it's possible to use the AbstractServletAwareTest
@RunWith(JUnit4.class)
public class SimpleJUnitTest extends org.apache.myfaces.extensions.cdi.test.junit4.AbstractJsfAwareTest
{
@Inject
private ViewAccessScopedBean viewAccessScopedBean;
@Test
public void testLogger()
{
assertNotNull(this.viewAccessScopedBean.getValue());
}
}
|
Because the unit-test modules will never be needed in production builds, you have to add the CODI-test modules manually, even if you are using one of the all-in-one packages. You'll need at least the myfaces-extcdi-junit-support-module for general JUnit support. And depending on your needs, you'll also need the myfaces-extcdi-owb-support-module and myfaces-extcdi-jsf-support-module. Don't forget to also include the needed (test)modules of the CDI implementation. In case of OWB, you'll need cditest and cditest-owb from the org.apache.openwebbeans.test group. For convenience, here's a pom-snippet to pick the needed dependencies from:
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>${junit-version}</version>
</dependency>
<!-- CODI test modules -->
<dependency>
<groupId>org.apache.myfaces.extensions.cdi.test</groupId>
<artifactId>myfaces-extcdi-junit-support-module</artifactId>
<version>${myfaces.codi.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.extensions.cdi.test</groupId>
<artifactId>myfaces-extcdi-owb-support-module</artifactId>
<version>${myfaces.codi.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.myfaces.extensions.cdi.test</groupId>
<artifactId>myfaces-extcdi-jsf-support-module</artifactId>
<version>${myfaces.codi.version}</version>
<scope>test</scope>
</dependency>
<!-- the CODI myfaces-extcdi-jsf-support-module depends on myfaces-test -->
<dependency>
<groupId>org.apache.myfaces.test</groupId>
<artifactId>myfaces-test12</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<!-- needed by myfaces test -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-el_1.0_spec</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
<!-- OWB test -->
<dependency>
<groupId>org.apache.openwebbeans.test</groupId>
<artifactId>cditest</artifactId>
<version>${owb.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.openwebbeans.test</groupId>
<artifactId>cditest-owb</artifactId>
<version>${owb.version}</version>
<scope>test</scope>
</dependency>
|
An example is available here.