A parte: il tentativo di modificare la risposta di Tomasz Nurkiewicz è stato respinto:
Questa modifica non rende il post nemmeno un po 'più facile da leggere, più facile da trovare, più accurato o più accessibile. Le modifiche sono completamente superflue o danneggiano attivamente la leggibilità.
Collegamento corretto e permanente alla sezione pertinente della documentazione sui test di integrazione.
Per abilitare il supporto per le transazioni, è necessario configurare un PlatformTransactionManager
bean in ApplicationContext
che viene caricato tramite @ContextConfiguration
semantica.
@Configurazione
@PropertySource ("application.properties")
public class Persistence {
@Autowired
Ambiente env;
@Fagiolo
DataSource dataSource () {
restituire nuovo DriverManagerDataSource (
env.getProperty ("datasource.url"),
env.getProperty ("datasource.user"),
env.getProperty ("datasource.password")
);
}
@Fagiolo
PlatformTransactionManager transactionManager () {
restituire nuovo DataSourceTransactionManager (dataSource ());
}
}
Inoltre, devi dichiarare l' @Transactional
annotazione di Spring a livello di classe o metodo per i tuoi test.
@RunWith (SpringJUnit4ClassRunner.class)
@ContextConfiguration (classes = {Persistence.class, SomeRepository.class})
@Transactional
public class SomeRepositoryTest {...}
L'annotazione di un metodo di test con @Transactional
causa l'esecuzione del test all'interno di una transazione che, per impostazione predefinita, verrà automaticamente annullata dopo il completamento del test. Se una classe di test viene annotata con @Transactional
, ogni metodo di test all'interno di quella gerarchia di classi verrà eseguito all'interno di una transazione.