Spring Boot:在单元测试中使用 Hibernate Session

Posted

技术标签:

【中文标题】Spring Boot:在单元测试中使用 Hibernate Session【英文标题】:Spring Boot: Use Hibernate Session in a unit test 【发布时间】:2016-07-23 14:09:17 【问题描述】:

在我的 Spring Boot 应用程序中,我访问我的 Hibernate 会话,如以下答案所示:https://***.com/a/33881946/272180

现在我还想在单元测试中访问 Hibernate Session。

如何在 Spring Boot 应用程序的单元测试中设置数据源并访问 Hibernate Session?

当我简单地自动装配它时,我得到org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread.

自动装配和使用 @Service 完美无缺。

我的单元测试类看起来像这样的 atm:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = App.class)
@WebIntegrationTest
public class WebTest 

    @Autowired
    private SessionFactory  sessionFactory;

    @Autowired
    private UserService     userService;

    @Test
    public void testService() 

        final List<User> users = userService.getUsers();

        // do something with users
        // ...

    

App.class是指带有main方法的类,用于运行Spring Boot应用程序。

【问题讨论】:

【参考方案1】:

事实上,解决方案就像将@Transactional 添加到测试类一样简单。

之后我可以像往常一样使用SessionFactory

【讨论】:

以上是关于Spring Boot:在单元测试中使用 Hibernate Session的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 单元测试示例

Spring Boot 项目在 IDEA 中 进行单元测试

怎样使用Spring Boot项目的单元测试?

在 Spring Boot 中使用 Hibernate 为 DAO 层配置单元测试

spring boot单元测试spring context重复加载问题

Spring Boot中编写单元测试