package com.softwaremill.common.util.dependency; import com.softwaremill.common.arquillian.BetterArquillian; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import javax.enterprise.inject.spi.BeanManager; import javax.inject.Inject; import static org.assertj.core.api.Assertions.assertThat; public class DTestWithArquillian extends BetterArquillian { @Inject private BeanManager beanManager; @Deployment public static WebArchive deployment() { WebArchive javaArchive = ShrinkWrap.create(WebArchive.class); javaArchive.addClasses(RequestScopedService.class).addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); return javaArchive; } static class TestRunnable implements Runnable { RequestScopedService requestScopedService; RequestScopedService getRequestScopedService() { return requestScopedService; } @Override public void run() { requestScopedService = D.inject(RequestScopedService.class); } } @BeforeMethod public void register() { D.register(new BeanManagerDependencyProvider(beanManager)); } @Test public void shouldExecuteInRequestContext() throws Exception { final TestRunnable runnable = new TestRunnable(); D.inRequestContext(runnable); assertThat(runnable.getRequestScopedService()).isNotNull(); } }