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

Spring Boot: Use Hibernate Session in a unit test

在我的 Spring 引导应用程序中,我访问我的 Hibernate 会话,如以下答案所示:

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

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

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

自动装配和使用 @Service 工作完美。

我的单元测试 class 看起来像这样 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指的是class和运行启动应用程序Spring的主要方法。

事实上,解决方案就像在测试中添加 @Transactional 一样简单-class。

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