我正在使用針測試API測試Seam應用程序。在我的代碼中,我使用EntityHome的getEntityManager()方法。當我在內存數據庫運行單元測試針對我得到以下異常:在Seam中從EntityHome注入EntityManager和getEntityManager之間有什麼區別
java.lang.IllegalStateException: No application context active
at org.jboss.seam.Component.forName(Component.java:1945)
at org.jboss.seam.Component.getInstance(Component.java:2005)
at org.jboss.seam.Component.getInstance(Component.java:1983)
at org.jboss.seam.Component.getInstance(Component.java:1977)
at org.jboss.seam.Component.getInstance(Component.java:1972)
at org.jboss.seam.framework.Controller.getComponentInstance(Controller.java:272)
at org.jboss.seam.framework.PersistenceController.getPersistenceContext(PersistenceController.java:20)
at org.jboss.seam.framework.EntityHome.getEntityManager(EntityHome.java:177)
etc ..
我可以用
@In
EntityManager entityManager;
注入的EntityManager解決一些錯誤不幸的是,持續的EntityHome
方法還請撥打getEntityManager
。這意味着很多嘲弄或以某種方式重寫代碼。有沒有解決方法,爲什麼拋出這個異常呢?順便說一下,我使用Seam 2.2.0 GA。
組件沒有什麼特別之處。它們由seam-gen產生。測試是在內存數據庫中執行的 - 我遵循http://jbosscc-needle.sourceforge.net/jbosscc-needle/1.0/db-util.html中的示例。