Nebenbei : Der Versuch, die Antwort von Tomasz Nurkiewicz zu ändern, wurde abgelehnt:
Diese Bearbeitung macht den Beitrag nicht einmal ein bisschen leichter zu lesen, leichter zu finden, genauer oder zugänglicher. Änderungen sind entweder völlig überflüssig oder beeinträchtigen die Lesbarkeit aktiv.
Korrekter und dauerhafter Link zum entsprechenden Dokumentationsabschnitt über Integrationstests.
Um die Unterstützung für Transaktionen zu aktivieren, müssen Sie eine PlatformTransactionManagerBean in der konfigurieren ApplicationContext, die über die @ContextConfigurationSemantik geladen wird .
@Aufbau
@PropertySource ("application.properties")
öffentliche Klasse Persistenz {
@Autowired
Umwelt env;
@Bohne
DataSource dataSource () {
neue DriverManagerDataSource zurückgeben (
env.getProperty ("datasource.url"),
env.getProperty ("datasource.user"),
env.getProperty ("datasource.password")
);
}}
@Bohne
PlatformTransactionManager transactionManager () {
neuen DataSourceTransactionManager (dataSource ()) zurückgeben;
}}
}}
Darüber hinaus müssen Sie die @TransactionalAnnotation von Spring für Ihre Tests entweder auf Klassen- oder Methodenebene deklarieren .
@RunWith (SpringJUnit4ClassRunner.class)
@ContextConfiguration (classes = {Persistence.class, SomeRepository.class})
@Transactional
öffentliche Klasse SomeRepositoryTest {...}
Durch das Kommentieren einer Testmethode mit @Transactionalwird der Test innerhalb einer Transaktion ausgeführt, die nach Abschluss des Tests standardmäßig automatisch zurückgesetzt wird. Wenn eine Testklasse mit Anmerkungen versehen ist @Transactional, wird jede Testmethode innerhalb dieser Klassenhierarchie innerhalb einer Transaktion ausgeführt.