[jboss-user] [JBoss Seam] - Injection in SeamTest

franky.b do-not-reply at jboss.com
Tue Jan 29 03:33:30 EST 2008


Hello,

I'm facing some problems with my injected properties in my TestNG tests.
Probably this is very easy to solve, but I currently don't have the "right" idea.

The class to be tested is as follows:


  | @Name("entityManager")
  | @Scope(ScopeType.CONVERSATION)
  | @SuppressWarnings("unchecked")
  | public class EntityManager implements Serializable, PagedEntityManager {
  |     
  |     /**
  |      * The injected entity class name.
  |      */
  |     @In(value = "#{entityClassName}", create=true)
  |     private String m_overrideEntityClassName;
  | 
  | 
  |     public void showEntity(){
  | 
  |        ...
  |        //access the injected field
  |        print(m_overrideEntityClassName);
  | 
  | 
  |     }
  | 
  | 
  | }
  | 

Note that the name entityManager is just arbitrary and has nothing to do with EJB or JPA EntityManager!

Now my testclass looks like this


  | public class EntityManagerTest
  |     extends SeamTest {
  | 
  | 
  |     @Test
  |     public void testPersistEntity() throws Exception {
  |          
  |             assert !super.isSessionInvalid();
  |        
  |             
  |             new FacesRequest() {
  | 
  |                 @Override
  |                 protected void updateModelValues() throws Exception
  |                 {
  | 
  |                   //try to set the entityClassName
  | 
  |                    setValue("#{entityClassName}", 
  |                        "Client");
  |             
  |                 }
  | 
  |                 @Override
  |                 protected void invokeApplication() throws Exception
  |                 {
  |                        //Invoke method that uses previously set entityClassName
  |                      invokeMethod("#{entityManager.showEntity()}");
  |                 }
  | 
  |  
  |                 
  |             }.run();
  | 
  | 
  | }
  | 
  | 

The problem is: entityClassName is never injected into the entityManager. When accessing the private field it in the method showEntity, it is always null.

Am I missing something?

Thanks for any help.

---
Frank

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4124288#4124288

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4124288



More information about the jboss-user mailing list