J'ai une application en cours de construction par Maven qui est un projet mixte Groovy et Java. En utilisant le plugin GMaven (v1.3), je peux facilement exécuter des tests Groovy sur les classes Java et Groovy. Et pendant les versions de l'application, mes classes java sont liées aux fichiers stub augmentés qui déclarent les méthodes de GroovyObject.Les classes d'application Groovy et les tests d'unité Java
Cependant, si j'écris un test en Java avec le code Groovy de l'application et que j'essaie d'appeler des méthodes de GroovyObject, j'obtiens des échecs de compilation.
Y a-t-il une solution de contournement pour cela? Existe-t-il des paramètres de configuration pour GMaven qui rendent cela possible?
merci.
est ici les choses de mon pom de build.plugins:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>target/generated-sources/groovy-stubs/main</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>generateTestStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<!-- providerSelection probably defaults to 1.7 now -->
<providerSelection>1.7</providerSelection>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Voici la classe de test java:
public class JavaGroovyTest extends TestCase {
@Test
public void testGroovyClasses(){
Model m = new Model(); //Model is an application class written in Groovy
assertNotNull(m);
assertEquals(4,m.getMetaClass().getProperties().size());
}
}
Et voici la sortie du compilateur:
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
/Users/mkohout/Documents/trunk/src/test/java/JavaGroovyTest.java:[17,24] cannot find symbol
symbol : method getMetaClass()
location: class com.q.Model
Quels échecs de compilation voyez-vous? – ataylor
Après tout, en pratique, on ne peut pas accéder à la plupart des "méta-méthodes d'exécution" de Groovy à partir de Java compilé statiquement. - Au mieux, les quatre méthodes (!) 'GroovyObject' sont accessibles. - Il existe des solutions de contournement pour d'autres méthodes Groovy d'exécution, mais c'est un mauvais hacking. – robbbert