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

ygl*_*odt 4 java junit4 spring-boot

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

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

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

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

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

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

@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
        // ...

    }
}
Run Code Online (Sandbox Code Playgroud)

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

ygl*_*odt 5

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

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