2016-07-07 1 views
0

Pour essayer, j'ai créé une classe groovy simple dans eclipse et j'ai écrit une méthode simple de test de spock. J'ai créé un objet avec @Shared annotation et Eclipse se plaint comme:Obtenir une erreur dans eclipse pour l'annotation @Shared de spock

Multiple markers at this line 
- Groovy:unable to resolve class Shared , unable to find class 
for annotation 
- Groovy:class Shared is not an annotation in @Shared 

Je googlé un peu, mais n'a pas trouvé la solution. Est-ce que quelqu'un sait pourquoi cette erreur se produit? Voici l'exemple de code:

class SimpleSpockTestExampleSpec extends Specification { 

    @Shared 
    MyObject obj; 

    def "length of Spock's and his friends' names"() 
    { 
     expect:"Replaces when-then block" 
     name.size() == length 

     where: 
     name << ["zzzzz","xxx","yyy"] 
     length << [5,6,7] 
    }  
} 

enter image description here

Nous vous invitons à ignorer les numéros de ligne dans l'image.

+0

Avez-vous importé l'annotation? Cela devrait être 'spock.lang.Shared'. – Opal

+0

@Opal, Merci beaucoup. Fonctionne maintenant. Pour Java dans Eclipse, il y a des suggestions pour les importations de paquets si le pointeur de la souris est placé sur l'erreur. Mais pour groovy, il ne montre rien. Donc je ne pouvais pas penser que c'était dû à un problème d'importation. –

+0

Ok, en ajoutant une réponse alors. S'il-vous-plaît acceptez. – Opal

Répondre

1

Il semble que vous n'ayez pas importé le paquet approprié. Avez-vous la déclaration suivante dans le code:

import spock.lang.Shared 

?

+0

Étant donné qu'il est difficile de choisir les importations individuelles, je ne vois aucun inconvénient à faire simplement l'ancienne astuce de l'importation: 'import spock.lang. *' – MarkHu

+0

@MarkHu, essentiellement des IDE donnant une suggestion correcte quand il s'agit d'importer des déclarations. Est-ce que cela fait une différence (et quoi de plus particulier) d'utiliser une étoile plutôt qu'une personne? – Opal

+0

La seule différence que je peux voir est exactement le point de la question OP: "Je sais que cette lib a cette fonctionnalité, alors pourquoi ai-je des erreurs ...?" Ne me lancez pas dans une diatribe sur la culture Java de la hiérarchie trop profonde/clairsemée. – MarkHu