Arquillian test cannot deploy with class with dependecy injections
davidsonalexia Nov 3, 2018 9:08 AMWhen I try to run the test with the SessionController class then I get the following error :
Tests in error:
service.SessionTest: Cannot deploy: test.war
@RunWith(Arquillian.class) public class SessionTest { @Deployment public static Archive<?> createTestArchive() { return ShrinkWrap.create(WebArchive.class, "test.war") .addPackage(Session.class.getPackage()) .addPackage(SessionController.class.getPackage()) .addAsDirectory("target/classes") // enable JPA .addAsResource(new File("src/main/resources/META-INF/persistence.xml")) // enable CDI .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml") // Deploy our test datasource .addAsWebInfResource(new File("src/main/webapp/WEB-INF/el-ds.xml")); } @Inject Session sess;
However when I remove the SessionController and add any other package the tests run fine. I can't find the error in my code. Please help.
Some bits of code were removed for confidentiality but here is the SessionController class.
@Singleton @Lock(LockType.READ) public class SessionController { private Logger logger = Logger.getLogger(this.getClass()); @Resource TimerService timerService; @PersistenceUnit(unitName = "mssql") private EntityManagerFactory emf; @Inject private ArchiveService archiveService; @Inject private AppConfigService appConfigService; @Inject private DateTimeOffsetService dateTimeOffsetService; @Inject private AuthenticationService authenticationService; @Inject private AuthorisationService authorisationService; @Inject private CacheService cacheService; @Inject private ActionHandlerService actionHandlerService; @Inject private LoginService loginService; @Inject private CrmTranscriptService crmTranscriptService; @Inject private LockService lockService; public ObjectNode processSession(String sessionId, ObjectNode requestNode, HttpServletRequest httpServletRequest) throws IOException { // Get body of the requestNode. This is the HTTP request body. // Used for reading only. JsonNode requestBodyNode = requestNode.get("body"); // Create responseNode to be returned. responseNodeDataNode is nested inside. ObjectMapper mapper = new ObjectMapper(); ObjectNode responseNode = mapper.createObjectNode(); ObjectNode responseDataNode = mapper.createObjectNode(); String sessionType = requestBodyNode.get("sessionType").asText(); logger.info("Handling sessionType '" + sessionType + "' for sessionId '" + sessionId + "'."); Session session = null; switch (sessionType) { } }