Si ho un database specifico solo per i test. Il database che uso quando testo la webapp da browser che se ho capito bene tu chiami db per prove manuali coincide con quello per i test. Quando eseguo i test non eseguo prove da interfaccia grafica e viceversa, inoltre quando premo su 'run' e l'applicazione parte il database si azzera. Insomma, non sento l'esigenza di avere 2 database in fase di sviluppo. A volte ho fatto partire un test e sono andato a vedere come veniva editato l'html delle pagine. Avere 1 solo db in sviluppo può avere le sue convenienze. I test non li tocco più, se riuscissi vorrei solo 2 thread che girino in parallelo e stop. Non voglio parallelizzare i test, solo avere 2 thred in parallelo che è diverso da parallelizzare tutto. Per risistemare il database svuoto tutte le tabelle, in sostanza faccio in questo modo:
DELETE FROM utenti CASCADE;
DELETE FROM dimensioni CASCADE;
ecc…
Non so come verificare se jdbcTemplate usa la stessa connection oppure usa una connection-pool. Io ho creato una classe che svuota tutto e rimette utenti e ruoli in un istante. A volte riazzero tutto anche a metà test. Il fatto che ci voglia del tempo è normale, faccio molti test. Comunque quello che mi da maggiormente fastidio non è il tempo di esecuzione dei thread ma non poter dividere questo codice su più file. Al momento ho solo 2 file, uno lo chiamo
TestApplicazione.java e l’altro lo chiamo
PreTestApplicazione.java (lo so ho poca fantasia... ), quando finisco di progettare un integration-test per una data funzionalità della mia applicazione e su PreTestApplicazione.java funziona tutto senza problemi sposto tutti i metodi in TestApplicazione.java, facendo questo da molto tempo TestApplicazione.java è diventato lungo come la divina commedia e lo avvio solo prima di mangiare merenda o vado a dare da mangiare al mio cagnolone. Ho letto il discorso del 'mvn test' ma io voglio semplicemente premere su di un pulsante dell'IDE.
Non ho parlato di db di produzione perché non ho neppure un server, sono lontano anni luce da avere un dominio, un server su cui installare tomcat e postgresql.
Se possibile vorrei evitare di dividere il codice in TestApplicazioneParte1.java, TestApplicazioneParte2.java, TestApplicazioneParte3.java, ecc..., convertire tali classi in @Service, rimuovere l'annotazione @Test e poi da TestApplicazione.java lanciare il singolo test in questo modo:
@Autowired
TestApplicazioneParte1 testApplicazioneParte1;
@Test
public void test1(){
testApplicazioneParte1.test1();
}
Mi sembra una soluzione un po' brutale, trovo anche strano che jUnit non abbia pensato a nulla di più ingenioso.
Sempre grazie per il tuo tempo