JUnit4 和 Guice 测试库:Acai

byb1234 10年前

Acai 是 JUnit4 和 Guice 的测试库,可以更容易的编写应用功能测试。

主要特性:

  • 注入测试需要的助手类

  • 启动测试需要的任意的服务

  • 运行测试之间的服务清理

  • 按照正确顺序启动多个服务

  • 创建测试作用域绑定

Acai 主要针对的是应用大型功能测试。

安装

<dependency>    <groupId>com.google.acai</groupId>    <artifactId>acai</artifactId>    <version>0.1</version>    <scope>test</scope>  </dependency>

使用 Acai 进行测试注入

@RunWith(JUnit4.class)  public class SimpleTest {    @Rule public Acai acai = new Acai(MyTestModule.class);    @Inject private MyClass foo;    @Test    public void checkSomethingWorks() {      // Use the injected value of foo here    }    private static class MyTestModule extends AbstractModule {      @Override protected void configure() {        bind(MyClass.class).to(MyClassImpl.class);      }    }  }

使用 Acai 启动服务

@RunWith(JUnit4.class)  public class ExampleFunctionalTest {    @Rule public Acai acai = new Acai(MyTestModule.class);    @Inject private MyServerClient serverClient;    @Test    public void checkSomethingWorks() {      // Call the running server and test some behaviour here.      // Any state will be cleared by MyFakeDatabaseWiper after each      // test case.    }    private static class MyTestModule extends AbstractModule {      @Override protected void configure() {        // Normal Guice modules which configure your        // server with in-memory versions of backends.        install(MyServerModule());        install(MyFakeDatabaseModule());        install(new TestingServiceModule() {          @Override protected void configureTestingServices() {            bindTestingService(MyServerRunner.class);            bindTestingService(MyFakeDatabaseWiper.class);          }        });      }    }    private static class MyServerRunner implements TestingService {      @Inject private MyServer myServer;      @BeforeSuite void startServer() {        myServer.start().awaitStarted();      }    }    private static class MyFakeDatabaseWiper implements TestingService {      @Inject private MyFakeDatabse myFakeDatabase;      @AfterTest void wipeDatabase() {        myFakeDatabase.wipe();      }    }  }

项目主页:http://www.open-open.com/lib/view/home/1429106216674