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 PlatformTransactionManager
Bean in der konfigurieren ApplicationContext
, die über die @ContextConfiguration
Semantik 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 @Transactional
Annotation 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 @Transactional
wird 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.