2016-04-04 12 views
2

In meinem Frühling Boot-Anwendung greife ich auf meine Hibernate-Session, wie in dieser Antwort gezeigt: https://stackoverflow.com/a/33881946/272180Frühling Boot: Verwenden Hibernate Session in einem Unit-Test

nun in einem Unit-Test Ich mag auch die Hibernate Session zuzugreifen.

Wie kann ich die Datenquelle einrichten und auf die Hibernate-Sitzung in einem Komponententest einer Spring-Boot-Anwendung zugreifen?

Als ich es einfach Autowire, bekomme ich org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread.

autowiring und mit einem @Service funktioniert einwandfrei.

My Unit-Testing-Klasse sieht wie folgt aus 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 mit dem Hauptverfahren zur Klasse bezieht, die verwendet wird, um die Frühlings-Boot-Anwendung auszuführen.

Antwort

1

In der Tat war die Lösung so einfach wie @Transactional der Test-Klasse hinzuzufügen.

Danach konnte ich die SessionFactory wie gewohnt verwenden.

Verwandte Themen