`
dishhy
  • 浏览: 9707 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在junit测试中运用openSessionInView

    博客分类:
  • java
阅读更多
因为在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);  
	}
}
分享到:
评论
1 楼 sendreams 2013-07-24  
AbstractTransactionalSpringContextTests 现在已经 @Deprecated了

相关推荐

    Junit测试案例使用

    4. Junit 在 Java 开发中的应用:Java 下的 team 开发,采用 cvs(版本控制) + ant(项目管理) + junit(集成测试) 的模式时,通过对 ant 的配置,可以很简单地实现测试自动化。 5. Junit 测试的分类:Junit 有不同的...

    实验5 JUnit测试框架的使用.doc

    运行结果将显示在测试结果窗口中,绿色的进度条提示我们,测试运行通过了。 七、示例 2:Junit 使用方法示例 2 在这个示例中,我们将学习如何使用 JUnit 来测试一个方法的多种情况。首先,添加一个类 WordDealUtil...

    自动饮料机Junit测试(软件测试与质量保证实验).rar

    在软件开发过程中,测试是确保产品质量的关键环节。...总之,"自动饮料机Junit测试"实验是实践软件测试理念和技巧的有效方式,它让学生在具体项目中运用单元测试,提高代码质量,培养良好的测试习惯。

    在Eclipse中使用JUnit4进行单元测试

    在Eclipse中使用JUnit4进行单元测试是一种常见的Java开发实践,它可以帮助开发者确保代码的正确性和稳定性。单元测试是软件开发中的重要环节,通过编写针对代码各个独立模块的测试用例,可以验证代码功能是否按预期...

    Junit 单元测试完整案例

    4. `@Autowired`:用于注入Spring管理的bean,使得在测试中可以直接使用。 5. `@MockBean`和`@SpyBean`:这些注解可以用来模拟或监视特定的bean,方便测试。 三、Struts框架的单元测试 1. Struts2的测试挑战:...

    junit测试_java_JUnit_JUnit测试_

    在"junit测试.txt"这个文件中,可能包含了关于如何使用JUnit进行测试的详细步骤、示例代码和最佳实践。例如,文件可能会讲解如何设置一个基本的JUnit测试类,通常这个类会继承自`junit.framework.TestCase`(对于较...

    javaweb中.java文件测试需要的框架(junit测试).rar

    本压缩包文件"javaweb中.java文件测试需要的框架(junit测试).rar"显然是为了帮助开发者理解如何在Java Web项目中使用JUnit进行测试。 **JUnit框架详解** JUnit是一个基于注解的测试框架,它的核心功能包括: 1....

    Myeclipse中的JUnit测试详细

    2. **导入JUnit库**:在测试类中,需要导入JUnit的相关包,如`import org.junit.Test;`。如果你使用的是JUnit4或更高版本,还需要导入`import static org.junit.Assert.*;`来使用各种断言方法,用于判断测试结果是否...

    Junit测试学习文档

    Mockito是一个流行的Java模拟框架,它允许开发者在测试中模拟对象的行为。与Junit结合使用,可以更有效地测试复杂的依赖关系。通过@Mock注解创建模拟对象,@InjectMocks注解自动注入依赖,@Spy则用于创建部分模拟...

    Junit测试jar包

    9. **测试规则**:JUnit5引入了规则的概念,允许在测试执行前后执行自定义逻辑,如`org.junit.rules.TemporaryFolder`可以用来管理临时文件。 10. **扩展与插件**:JUnit支持扩展,如Mockito用于模拟对象,TestNG和...

    JUnit测试代码示例

    在本文中,我们将深入探讨JUnit的核心概念、关键特性以及如何使用JUnit3进行测试。 首先,理解单元测试的概念至关重要。单元测试是对软件中的最小可测试单元进行检查,如方法或类。其目标是确保每个部分都能独立地...

    junit测试private函数

    3. **设置访问权限**:由于私有方法默认不允许外部直接访问,因此在测试前,我们需要通过`setAccessible(true)`方法取消访问限制,允许反射调用。 4. **调用私有方法**:使用`Method`对象的`invoke()`方法,传入...

    junit测试案例程序

    在这个“junit测试案例程序”中,我们可以找到一些基本的JUnit测试用例示例,这对于初学者来说是极好的学习资源。 首先,JUnit的核心概念是测试类和测试方法。一个测试类通常对应于被测试的业务逻辑类,而测试方法...

    JUnit测试jar包.zip

    这个"JUnit测试jar包.zip"文件很可能包含了JUnit库的jar文件,使得开发者能够在自己的项目中引入JUnit进行测试工作。 在Java开发中,单元测试是一种重要的软件质量保证手段,它通过编写小规模的独立测试代码来验证...

    junit测试测试代码

    如果这个文件包含了关于这两个技术如何进行单元测试的信息,那么理解DW(R)和ExtJS的工作原理以及如何在JUnit测试中与之交互也是重要的知识点。然而,由于文件内容未给出,具体的细节无法展开讨论。

    junit测试小例子

    在`JUnitTest`这个压缩包中,很可能包含了几个示例测试类,每个类都展示了如何使用JUnit编写测试用例。可能的文件结构可能如下: 1. `MyClassTest.java`:这是一个测试类,它会包含针对`MyClass`类的多个测试方法。...

Global site tag (gtag.js) - Google Analytics