Possiedo un'applicazione Web JPA/Hibernate/Spring/Tomcat con cache dati di secondo livello abilitata per motivi di prestazioni. E il cache fa il suo lavoro molto bene!Hibernate cache di dati di secondo livello e test di integrazione/accettazione
Ho anche una suite di test Cucumber che aggiunge alcuni dati di test direttamente al database dell'applicazione e quindi esegue alcuni passaggi Selenium. Certamente fallisce in quanto l'applicazione non vede gli aggiornamenti a causa della cache di secondo livello.
So che posso creare build speciali per il test con cache disabilitata (passando alcune proprietà booleane per il filtro Maven o simili) Ma ci sono molte entità annotate @Cache quindi disabilitare la cache rende l'applicazione fallire con l'eccezione "Secondo la cache di livello non è abilitata ".
Un altro approccio potrebbe essere utilizzare il servizio remoto di ehcache per svuotare la cache o configurarlo con zero object lifetime o simile.
Posso anche creare i miei dati di test utilizzando solo l'interfaccia utente dell'applicazione, ma ciò aggiunge complessità non necessaria ai casi di test, quindi preferisco scriverli sul DB prima dell'esecuzione del test.
Qualcuno potrebbe condividere il proprio approccio alle applicazioni di test di integrazione con cache di dati di secondo livello abilitata?
Non tutti, ma alcuni dei miei test BDD hanno i seguenti passaggi: creare dati di test, fare azioni di selenio, ripulire. D'accordo con la scatola nera, ma la creazione e la pulizia dei dati tramite l'interfaccia utente è estremamente difficile a volte e potrebbe rendere i test dipendenti l'uno dall'altro (se l'interfaccia utente relativa al salvataggio è interrotta, anche tutti gli altri test che richiedono qualcosa da salvare vengono interrotti) – ike3
Sì, i test dipendenti non riusciranno, ma lo scopo principale - qualcosa non riesce, è soddisfatta. E se si inseriscono direttamente i dati in DB, allora non si tratta di test di accettazione, in sostanza, non è così che gli utenti finali lavorano con l'app. E tali test dovrebbero essere più o meno a grana grossa. Se hai bisogno di più a grana fine, questo potrebbe essere un brutto posto per il selenio. –