J'ai écrit un exemple de maquette pour illustrer cela sans exposer quoi que ce soit de confidentiel. C'est un exemple "fictif" qui ne fait rien, mais le problème se produit dans l'initialiseur de test.Comment utiliser un coureur JUnit Parameterized avec un constructeur varargs?
@RunWith(Parameterized.class)
public class ExampleParamTest
{
int ordinal;
List<String> strings;
public ExampleParamTest(int ordinal, String... strings)
{
this.ordinal = ordinal;
if (strings.length == 0)
{
this.strings = null;
}
else
{
this.strings = Arrays.asList(strings);
}
}
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{0, "hello", "goodbye"},
{1, "farewell"}
});
}
@Test
public void doTest() {
Assert.assertTrue(true);
}
}
Fondamentalement, j'avoir un constructeur de test qui accepte plusieurs arguments pour une variable de liste locale et je veux remplir ce par un initialiseur de tableau. La méthode de test gère correctement la variable de la liste locale - j'ai supprimé cette logique pour simplifier le test. Quand j'écris ceci, mon EDI ne se plaint pas de la syntaxe et de la construction de la classe de test sans aucune erreur de compilation. Cependant quand je le lance, je reçois:
doTest[0]:
java.lang.IllegalArgumentException: wrong number of arguments
at java.lang.reflect.Constructor.newInstance(Unknown Source)
doTest[1]:
java.lang.IllegalArgumentException: argument type mismatch
at java.lang.reflect.Constructor.newInstance(Unknown Source)
exactement ce qui a mal tourné ici, et comment puis-je utiliser correctement ce modèle?
Qu'est-ce que doTest et quelles données contient-il? – Jes
Dans cet exemple, doTest est juste un test fictif pour permettre à cette suite de tests de s'exécuter dans JUnit. Le problème ne se trouve pas dans le code de test, comme vous le verrez lorsque vous essayez d'exécuter ce test en l'état; malgré le fait qu'il ait un corps de test presque vide, il ne fonctionne toujours pas en raison de l'erreur d'initialisation mentionnée ci-dessus. – Kidburla
J'ai ajouté une partie de la piletrace que je vois quand j'exécute votre test pour indiquer clairement que l'erreur se produit lorsque le constructeur varargs est appelé. Si c'est différent de ce que vous voyez, n'hésitez pas à le changer ou à le rétablir. –