Junit inline comparateur erreur d'initialisation de l'
J'ai créé un SortedList Classe a un Constructeur qui prend un java.util.Comparateur comme un argument.
Après l'exécution des tests Unitaires sur ma machine (par eclipse 3.3.0), tout était OK. Cependant, Hudson plaintes parce qu'il dit qu'il ne peut pas instancier mon comparateur.
Ici son mon test simple (extraits)
public class SortedListTest {
class strcmp implements Comparator<String>{
public strcmp(){}
public int compare(String s1,String s2){
return s1.compareTo(s2);
}
}
@Test
public void testAdd(){
SortedList<String> list = new SortedList<String>(new strcmp());
}
}
Ou d'une autre façon:
public void testAdd(){
SortedList<String> list = new SortedList<String>(new Comparator<String>(){
public int compare(String s1,String s2){
return s1.compareTo(s2);
}
});
}
L'erreur d'Hudson montre est
ar.com.lib.SortedListTest$strcmp.initializationError0
Message D'Erreur
De la classe de Test devrait le public, d'avoir zéro argument du constructeur
Stacktrace
java.lang.Exception: la classe de Test devrait
le public, d'avoir zéro argument du constructeur
au
java.lang.de réfléchir.Constructeur.newInstance(Constructeur.java:513)
au
java.lang.de réfléchir.Constructeur.newInstance(Constructeur.java:513)
Causés par:
java.lang.NoSuchMethodException:
ar.com.lib.SortedListTest$strcmp.()
au
java.lang.Classe.getConstructor0(de la Classe.java:2706)
au
java.lang.Classe.getConstructor(de la Classe.java:1657)
Je-ve essayé d'utiliser le @Ignorer l'annotation, mais pas de chance jusqu'à présent. Il l'habitude de compiler lorsque j'essaie
@Ignore class strcmp{}
Toutes les idées seront appréciées. Merci à l'avance.
C'est la seule que se plaindre! Le fauteur de troubles.
Je suis arriver la même chose. Les Tests s'exécutent localement sous Maven bien, mais échouer avec cette erreur sur l'Hudson. @Ignorer avec la classe ne fonctionne pas non plus. Va JUnit 3 style (extension de cas de test) ne fonctionne pas non plus.
Ajouté hudson tag, puisque c'est une interaction entre le conteneur et junit.
OriginalL'auteur Tom | 2009-07-20
Vous devez vous connecter pour publier un commentaire.
Le problème est que Hudson est de voir strcmp comme une classe de test qu'il essaie de l'exécuter. Le fait que c'est un intérieur de classe ne change pas. Le Hudson de configuration doit être modifiée pour exclure cette classe comme une classe de test.
Si vous ne pouvez pas le faire, puis faire strcmp un public static de la classe avec un public noargs constructeur et ajouter une méthode de test qui ne fait rien (ou l'ignorer tag sur la classe peut travailler). Mais il serait beaucoup mieux si vous pouvez obtenir le lanceur de test pour ne pas choisir cette classe comme une classe de test.
<exclude name="**/*$*.class" />
OriginalL'auteur Yishai
Bien, est-ce que votre classe avec la
@Test
public zéro-arg constructeur? Ne peuvent pas dire si cela est vrai de ce que vous avez posté.Vous pourriez aussi bien mettre l'intérieur de la classe une accessibilité modificateur (
public
,protected
, etc.) le long de avec le nom correctement (de la classe doit commencer avec une lettre majuscule). Si ces classes sont invoquées par la réflexion, il est toujours possible que le runner JUnit fait des hypothèses sur la mise en forme et règles de nommage...Comment Hudson exécution de vos tests? Par Le Biais De Fourmi? Maven? Obtenez-vous les mêmes erreurs lorsque vous exécutez les tests de la même façon dans une console (c'est à dire en prenant Hudson hors de l'image)?
Je reçois ce sur un projet Maven dans l'Hudson. Quand je le lance en local, pas d'erreurs.
OriginalL'auteur matt b