public void test() throws Exception {
    System.setProperty(
        javax.naming.Context.INITIAL_CONTEXT_FACTORY, InitContextFactory.class.getName());

    ConfigurationFactory config = new ConfigurationFactory();
    Assembler assembler = new Assembler();

    assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
    assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
    assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));

    // containers
    StatefulSessionContainerInfo statefulContainerInfo =
        config.configureService(StatefulSessionContainerInfo.class);
    statefulContainerInfo.properties.setProperty("PoolSize", "0");
    statefulContainerInfo.properties.setProperty("BulkPassivate", "1");
    statefulContainerInfo.properties.setProperty("Frequency", "0");
    assembler.createContainer(statefulContainerInfo);

    EjbJar ejbJar = new EjbJar();
    StatefulBean bean = ejbJar.addEnterpriseBean(new StatefulBean(TargetBean.class));
    bean.setHomeAndRemote(TargetHome.class, Target.class);

    assembler.createApplication(
        config.configureApplication(
            new EjbModule(
                getClass().getClassLoader(), getClass().getSimpleName(), "test", ejbJar, null)));

    calls.clear();

    InitialContext ctx = new InitialContext();
    TargetHome home = (TargetHome) ctx.lookup("TargetBeanRemoteHome");
    assertNotNull(home);

    Target target = home.create("Fuzz");
    assertNotNull(target);

    String name = target.getName();
    assertEquals("Fuzz", name);

    target.remove();

    assertCalls(Call.values());
  }