`

在junit中使用open session in view

    博客分类:
  • Java
 
阅读更多

废话不多说直接上代码:

 

jpa的

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.SessionFactoryUtils;
import org.springframework.orm.hibernate3.SessionHolder;
import org.springframework.orm.jpa.EntityManagerFactoryUtils;
import org.springframework.orm.jpa.EntityManagerHolder;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.support.TransactionSynchronizationManager;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import java.util.Date;
import java.util.Iterator;

/**
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/spring-test.xml"})
public class BookServiceTest {

    @Autowired
    private BookService bookService;

    @Autowired
    /**
     * 需要声明这个对象
     */
    private EntityManagerFactory entityManagerFactory;

    @Before
    /**
     * 在测试执行之前把entityManager加入到事务同步管理器当中
     */
    public void before() {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        TransactionSynchronizationManager.bindResource(entityManagerFactory , new EntityManagerHolder(entityManager));

    }

    @After
    /**
     * 在测试执行完毕之后,关闭entityManager,并且接触绑定
     */
    public void after() {
        EntityManagerHolder holder = (EntityManagerHolder) TransactionSynchronizationManager.getResource(entityManagerFactory);
        EntityManagerFactoryUtils.closeEntityManager(holder.getEntityManager());
        TransactionSynchronizationManager.unbindResource(entityManagerFactory);
    }

    @Test
    public void testSave() {
        Book book = new Book();

        book.setIsbn("123-123-11");
        book.setPubdate(new Date());
        book.setRegdate(new Date());
        book.setTitle("test book title");

        bookService.save(book, 5L);

    }

    @Test
    public void testFind() {
        Iterable<Book> bookIterable = bookService.list();
        Iterator<Book> bookIterator = bookIterable.iterator();

        while(bookIterator.hasNext()) {
            Book book = bookIterator.next();
            System.out.println(book.getOwner());
        }
    }
}

 

下面是hibernate的

@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })  
public class OpenSessionInViewTest extends AbstractTransactionalSpringContextTests {  
  
    @Resource(name="hibernateSessionFactory")  
    private SessionFactory sessionFactory;  
         
    @Before  
    public void init() {  
        Session s = sessionFactory.openSession();  
        TransactionSynchronizationManager.bindResource(sessionFactory,    
                new SessionHolder(s));    
    }  
  
    @Test  
    public void testQuery() {  
        SessionHolder holder = (SessionHolder)TransactionSynchronizationManager.getResource(sessionFactory);  
        Session session = holder.getSession();  
        User user= (User)session.get(User.class, "abc0003");  
        System.out.println(user.getId());  
        Set<Book> books= user.getBooks();  
        for (Book book: books) {  
            System.out.println(book.getId());  
        }  
    }  
  
    @After  
    public void close() {  
        SessionHolder holder = (SessionHolder)TransactionSynchronizationManager.getResource(sessionFactory);  
        SessionFactoryUtils.closeSession(holder.getSession());  
        TransactionSynchronizationManager.unbindResource(sessionFactory);    
    }  
}
 
分享到:
评论

相关推荐

    JUnit in Action 3nd Edition

    "JUnit in Action 3rd Edition" JUnit是一种流行的Java单元测试框架,由Kent Beck和Eric Gamma于1997年创立。JUnit在软件测试领域中扮演着重要的角色,帮助开发者编写高质量的代码。下面是关于JUnit的重要知识点: ...

    JUnit in Action(JUnit经典书籍)中文+英文

    在《JUnit in Action》的英文版中,读者可以接触到原汁原味的编程语言和术语,这对于提升专业英语水平和理解国际化的编程思想非常有帮助。同时,英文版通常会包含最新的技术更新和社区发展动态,使读者能够紧跟技术...

    JUnit in action JUnit Recipies

    在《JUnit in Action》中,作者详细阐述了如何设计和组织测试,包括断言(Assertions)的使用,这是一门艺术,因为它需要精确地定义预期结果。JUnit提供了多种断言方法,如assertEquals(),assertTrue(),assertNull...

    在eclipse中使用junit4教程

    在 Eclipse 中使用 jUnit4,需要安装 jUnit4 插件,安装完成后可以在 Eclipse 项目中使用 jUnit4 进行单元测试。 jUnit4 的主要特点是使用 Annotation 来描述测试用例,使得测试用例的编写更加简洁和灵活。在 jUnit...

    使用junit中例子

    使用junit中例子, junit demo, junit 教程

    JUnit in Action中文版.

    在详细讲解JUnit的基础知识时,书中涵盖了如何创建和运行基本的JUnit测试用例,包括断言的使用、测试注解的理解以及异常处理。此外,还介绍了如何利用JUnit的@Test注解来定义测试方法,以及如何使用@Before和@After...

    JUnit in Action 中文版电子书

    在本书中,作者深入浅出地介绍了JUnit的基本概念和核心功能,包括如何创建和运行测试用例,断言的使用,以及异常处理。读者将学习到如何编写简洁、高效的测试代码,确保每个单元都经过充分验证。此外,书中还涵盖了...

    JUnit in Action中文版

    JUnit in Action中文版JUnit in Action中文版JUnit in Action中文版JUnit in Action中文版

    JUnit如何使用介绍

    (在此文档中我使用JUnit的版本为JUnit4.3.1)先检查一下你的Eclipse环境是否已经有编写JUnit测试类的环境了,如果有了就可以直接使用了,如果没有安装,请参考以下操作,如:在Eclipse要安装那些插件和写JUnit测试...

    junit in action 源码

    在JUnit5中,可以使用@Test注解的async属性或者使用@TestFactory注解来创建异步测试。 9. **Mock和Stub**:虽然JUnit本身不包含模拟(Mock)和桩(Stub)功能,但常常与Mockito等库结合使用,以隔离测试环境。通过...

    在java中使用 junit单元测试

    在Java中使用JUnit单元测试是软件开发过程中不可或缺的一部分。单元测试是指在开发过程中,对代码的一部分进行测试,以确保代码的正确性和可靠性。在Java中,JUnit是最流行的单元测试框架之一。 单元测试的重要性 ...

    在Eclipse中使用Junit

    在Eclipse中使用JUnit是Java开发中的一个关键技能,它能帮助我们进行单元测试,确保代码的质量和稳定性。JUnit是一个流行的开源测试框架,专为Java编程语言设计,它简化了编写和运行测试用例的过程。下面我们将详细...

    JUnit在Eclipse中的使用.pdf

    ### JUnit在Eclipse中的使用详解 #### 一、JUnit简介 JUnit是一个广泛使用的Java单元测试框架,由Kent Beck和Erich Gamma共同开发。它提供了一种简单的方式来编写可重复的测试,支持开发者进行测试驱动开发(TDD)...

    ANT&JUNIT中文手册

    在实际项目中,开发者通常会利用Ant的classpath元素指定JUnit库的位置,然后使用junit任务来运行测试。这样,每次构建时,Ant都会自动执行所有的测试,如果有任何失败,构建就会失败,提醒开发者及时修复问题。 ...

    junit的使用

    在"JunitTest"这个压缩包中,可能包含了演示如何在Android环境中使用Junit进行单元测试的相关代码示例。你可以解压后查看具体的类和方法,了解如何将理论知识应用到实际项目中。同时,通过学习这些例子,你还可以...

    JUnit3.8.1 以及使用JUnit测试的代码demo

    在`JUnit & 简单Junit使用代码`这个文件中,可能包含了一个或多个示例,展示了如何创建测试类、编写测试方法、使用断言以及设置测试环境。例如,可能有一个简单的数学操作类`MathUtils`,以及对应的测试类`...

Global site tag (gtag.js) - Google Analytics