因为在spring提供的junit扩展中无法像web程序那样使用openSessionInView,
查了下官方信息,找到了如下解决方式
spring已经提供了针对此情况的应对方式,具体类为TransactionSynchronizationManager
使用此类可在事务中绑定一个hibernate的session对象,使之达到openSessionInView的效果.
具体列子:
@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测试 test txt file
Myeclipse中的JUnit测试详细
junit测试测试junit测试测试junit测试测试junit测试测试
Junit,测试Junit,测试案例使用
javaweb中.java文件测试需要的框架(junit测试).rar
junit3 junit4 api,单元测试的利器
Junit单元测试Junit单元测试Junit单元测试Junit单元测试
Junit测试.mp4
Junit测试jar包
软件测试JUnit测试框架的使用实验1报告
通过单元测试工具(Junit)支持,使学生对单元测试中测试用例的设计原则,设计方法进行了解和掌握。
Junit 通常用于那些有明确返回值的方法的测试,而无法对返回值是void类型的方法进行测试,因为Junit的assert断言方法只适用于预期值与实际值的比 较,对于void类型的方法,我们无法从它的return语句获得具体的返回值...
Junit通常用于那些有明确返回值的方法的测试,而无法对返回值是void类型的方法进行测试,因为Junit的assert断言方法只适用于预期值与实际值的比较,对于void类型的方法,我们无法从它的return语句获得具体的返回值。...
上下文时间软件测试中Junit单元测试实例在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在象C++这样的面向对象的语言中,要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是...
JUnit测试代码示例,JUnit3的代码示例。
在Eclipse中使用JUnit4进行单元测试!
使用Eclipse进行Junit测试,junit类的创建
利用java的反射,实现在junit中测试private函数
自己做了一个junit测试包,用起来很方便