J'essaye donc d'appeler le coureur de test JUnit Parameterized
sur un chargement d'objets typés génériques individuels. Les classes spécifiques à utiliser sont connues des classes descendantes.Comment appeler un coureur de test JUnit Parametrized sur une collection de types génériques?
Au départ, je réussi à obtenir une méthode qui retourne un Collection<T>
pour JUnit travailler avec, mais je réalise JUnit exige en fait un Collection<T[]>
- Je vais avoir du mal à créer ce tableau en raison de la réticence de Java/refus de créer des tableaux de génériques .
protected static <T> Collection<T> someMethod(Class<T> someClass)
{
Collection<T> result = new ArrayList<T>();
T someBean;
while (someCondition(...))
{
//Do some stuff to compute someBean
result.add(someBean);
}
return result;
}
Maintenant JUnit nécessite une Collection<T[]>
comme ceci:
// (descendant class)
@Parameters
public static Collection<SomeActualClass[]> data()
{
return someMethod(SomeActualClass.class);
}
Je veux changer le type de retour en faisant quelque chose comme:
protected static <T> Collection<T[]> someMethod(Class<T> someClass)
{
Collection<T[]> result = new ArrayList<T>();
T someBean;
while (someCondition(...))
{
//Do some stuff to compute someBean
result.add(new T[]{someBean});
}
return result;
}
Malheureusement Java ne me laisse pas faire ceci parce que vous ne pouvez pas créer de tableaux génériques.
Je suis tenté de mettre l'instruction comme result.add((T[])new Object[]{someBean});
mais est-ce sûr? ou y a-t-il un meilleur moyen?
« JUnit fait nécessite une Collection "Pourquoi cela exige-t-il cela? Cela semble un peu étrange –
user102008