JUnice core - The JUniceRunner

The core of JUnice is the org.nnsoft.guice.junice.JUniceRunner class, that's a JUnit Runner and extends org.junit.internal.runners.BlockJUnit4ClassRunner For each test case the JUniceRunner 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.

Getting Started

To use JUnice users have to annotate the junit test class in the following way:

@RunWith(JUniceRunner.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 JUnice runner can be used also in a super class:

@com.google.inject.ImplementedBy(AcmeDatabasePoolImpl.class)
public interface AcmeDatabasePool {

    void open();

    void close();
}
@RunWith(JUniceRunner.class)
abstract public class DatabasePoolInitTest {

   @com.google.inject.Inject
   private static AcmeDatabasePool pool;

   @org.junit.BeforeClass
   public static void setUpYourClass(){
        pool = injector.getInstance(AcmeDatabasePool.class);
        pool.open();
        ...
   }

   @org.junit.AfterClass
   public static void setUpYourClass(){
        ...
        pool.close();
        ...
   }

}
public class DatabaseClassTest  extends DatabasePoolInitTest{

   @org.junit.Test
   public  void test(){
        ...
   }

}