Le informazioni che ti hanno dato sono sbagliate.
Groovy può interagire con le classi Java senza problemi. Infatti, la maggior parte delle classi del nucleo di Spock sono classi Java (.java) e non Groovy.
I problemi relativi al test delle classi Java con Groovy sono causati da Maven (beh non direttamente da Maven, ma dai plugin responsabili della compilazione e dell'esecuzione dei test).
Per qualche motivo l'interazione tra il plugin Groovy e il plug-in di test di Maven (surefire) fa schifo. (Vedi UPDATE non fa schifo nelle versioni recenti di GMaven).
Mi sono imbattuto in questo problema molto tempo fa. Che probabilmente è causato dal modo in cui è stato impostato il programma di caricamento di classe per l'esecuzione del test.
Non posso darti una risposta su come risolvere il problema di compatibilità di Maven Groovy / Surefire, perché in quel momento invece di provare a sistemarlo ho preso per me il percorso più veloce: sono passato da Maven a Gradle.
E riguardo le differenze sulla compilazione ... non fare il .java a .groovy rinomina.
Groovy è un meraviglioso linguaggio dinamico ed è facile migrare da Java a Groovy. Ma non è esattamente la stessa lingua, ci sono alcune piccole differenze da tenere in considerazione: link
Quindi se rinomini automaticamente i file per il test, c'è una buona probabilità che alcune cose non si compileranno come i letterali di array, oppure si compileranno con un semantico diverso come ==
.
Quindi il mio consiglio è: Spock è un meraviglioso framework per i test e Groovy può farti risparmiare un sacco di codice ripetitivo. Puoi migrare tutto in Groovy, ma questa decisione richiede una valutazione più approfondita degli aspetti tecnici del tuo progetto. Se si desidera utilizzare Groovy per i test e Java per le classi principali, cercare una soluzione nella comunità Maven o provare a passare la build su Gradle.
Nota aggiuntiva: il compilatore Groovy è un superset del compilatore Java. Quando un file .java viene dato al compilatore Groovy, usa il compilatore Java. Significa che puoi mescolare .java e .groovy nella stessa directory e usare il compilatore Groovy per compilare tutto. Forse questa configurazione ti aiuta con il plug-in di test di Maven.
UPDATE: Recentemente ho dovuto lavorare con un progetto usando Spock e Maven 3. Far coesistere entrambi è più facile di prima:)
Innanzitutto, configura il tuo plugin GMaven, puoi vedere un esempio qui: link
Quindi devi configurare Surefire in modo che visualizzi le tue classi di test:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<includes>
<include>%regex[.*Spec.*]</include>
</includes>
</configuration>
</plugin>
Il trucco è nell'espressione regex
poiché, secondo i documenti Surefire, si applica alle classi (se non si utilizza regex si applica ai file sorgente).