Ho do create an Arquillian test for converscation scope??
dandii Feb 28, 2011 10:22 AMHi again,
I have still troubles with arquillian tests.
During testing my EntityHome and using the persist Method I get the Exception: “javax.enterprise.context.ContextNotActiveException: Conversation Context not active when method called on conversation Transient conversation“.
My test looks like:
@Test public void testAppInstituteHome() throws LoginException, PermissionException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException, SystemException, NotSupportedException{ AppInstitute ai = new AppInstitute("Test Institute", "Location", "Street", new Integer(6020), "URL", new Long(854139751)); transaction.begin(); AppInstituteHome.setInstance(ai); AppInstituteHome.persist(); transaction.commit(); }
The persist method in the AppInstituteHome is:
@Transactional public String persist() throws LoginException, PermissionException { if (!isPermissionToPersist()) { throw createPermissionException(DroolsConstants.CREATE); } entityManager.persist(getInstance()); entityManager.flush(); // some additional code conversationManager.endConversation(); return returnTarget(getListOutcome()); }
Where the Code from the ConversationManager is:
@Named @Stateless public class ConversationManager implements Serializable { @Inject private Conversation conversation; public void beginConversation() { if (!conversation.isTransient()) { conversation.end(); } conversation.begin(); } public void endConversation() { if (!conversation.isTransient()) { log.info("endConversation - really ending one"); conversation.end(); } } public String currentConversationId() { return conversation.getId(); } }
The problem is (as I understand it), that I do not have a conversation in the test case. That's why I can not begin or end a conversation, and I get the "javax.enterprise.context.ContextNotActiveException: Conversation Context not active when method called on conversation Transient
conversation".
I found some related topics with the solution of using the following code snipped (see for example http://seamframework.org/Community/ConversationScopedInArquillianWithWeldEmbedded) but I have no class ContextLifecycle.
Container.instance().services().get(ContextLifecycle.class).setupConversationContext();
Do you know how I can create a conversation, which is necessary for my test?