所以我有这个实现:
package biz.tugay.books10Aug.dao;
/* User: koray@tugay.biz Date: 10/08/15 Time: 22:22 */
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class PersistenceUtil {
private static EntityManagerFactory entityManagerFactory;
public static void initalizeEntityManagerFactory() {
if (entityManagerFactory == null || !entityManagerFactory.isOpen()) {
entityManagerFactory = Persistence.createEntityManagerFactory("bookshop");
}
}
public static EntityManagerFactory getEntityManagerFactory() {
return entityManagerFactory;
}
public static EntityManager getEntityManager() {
if (entityManagerFactory == null || !entityManagerFactory.isOpen()) {
initalizeEntityManagerFactory();
}
EntityManager entityManager = entityManagerFactory.createEntityManager();
return entityManager;
}
public static void closeEntityManagerFactory() {
entityManagerFactory.close();
}
}
当我启动我的网络应用程序时,我希望EntityManagerFactory准备好,所以我有这个监听器:
package biz.tugay.books10Aug.web;
/* User: koray@tugay.biz Date: 10/08/15 Time: 22:24 */
import biz.tugay.books10Aug.dao.PersistenceUtil;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class BookShopServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
PersistenceUtil.initalizeEntityManagerFactory();
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
PersistenceUtil.closeEntityManagerFactory();
}
}
如何正确地对此监听器进行单元测试?这就是我所拥有的,但我不确定它是否有用:
package biz.tugay.books10Aug;
/* User: koray@tugay.biz Date: 10/08/15 Time: 22:28 */
import biz.tugay.books10Aug.dao.PersistenceUtil;
import biz.tugay.books10Aug.web.BookShopServletContextListener;
import org.junit.Assert;
import org.junit.Test;
import javax.persistence.EntityManagerFactory;
public class BookShopServletContextListenerTest {
@Test
public void shouldCreateEntityManagerFactoryWithoutAnyExceptions() throws Exception {
BookShopServletContextListener bookShopServletContextListener
= new BookShopServletContextListener();
bookShopServletContextListener.contextInitialized(null);
}
@Test
public void testContextDestroyed() throws Exception {
BookShopServletContextListener bookShopServletContextListener
= new BookShopServletContextListener();
bookShopServletContextListener.contextInitialized(null);
bookShopServletContextListener.contextDestroyed(null);
EntityManagerFactory entityManagerFactory = PersistenceUtil.getEntityManagerFactory();
Assert.assertTrue(!entityManagerFactory.isOpen());
}
}
答案 0 :(得分:0)
我会使用@PeristentUnit自动注入EntityManagerFactory。在这种情况下,无需创建特定的ServletListener,从而对其进行测试。