The core of Apache Onami-Test is the org.apache.onami.test.OnamiRunner class, that's a JUnit Runner and extends org.junit.internal.runners.BlockJUnit4ClassRunner For each test case the OnamiRunner initializes a google-guice injector before that your test case class is instantiated.
So you have an injector ready to use already into any method @BeforeClass.
To use Apache Onami-Test users have to annotate the junit test class in the following way:
@RunWith( OnamiRunner.class )
public class SimpleTest
{
@com.google.inject.Inject
private com.google.inject.Injector injector;
@org.junit.BeforeClass
public static void setUpYourClass()
{
// use injector.
injector.getInstance( AcmeService.class );
}
}The Apache Onami-Test runner can be used also in a super class:
@com.google.inject.ImplementedBy( AcmeDatabasePoolImpl.class )
public interface AcmeDatabasePool
{
void open();
void close();
}@RunWith( OnamiRunner.class )
public abstract class DatabasePoolInitTest
{
@com.google.inject.Inject
private static AcmeDatabasePool pool;
public void setPool( AcmeDatabasePool pool )
{
this.pool = pool;
}
@org.junit.BeforeClass
public static void setUpYourClass()
{
...
pool.open();
...
}
@org.junit.AfterClass
public static void tearDownYourClass()
{
...
pool.close();
...
}
}public class DatabaseClassTest
extends DatabasePoolInitTest
{
@org.junit.Test
public void test()
{
...
}
}