So versuche ich den JUnit Parameterized
Test Runner auf eine Last von einzelnen generischen typisierten Objekten aufzurufen. Die zu verwendenden spezifischen Klassen sind den untergeordneten Klassen bekannt.Wie kann ich einen JUnit parametrisierten Test-Runner für eine Sammlung generischer Typen aufrufen?
Ursprünglich gelang es mir, eine Methode zu erhalten, die Collection<T>
für JUnit zu arbeiten, aber dann erkannte ich JUnit tatsächlich eine Collection<T[]>
- Ich habe Probleme beim Erstellen dieses Array wegen Javas Zurückhaltung/Verweigerung, Arrays von Generika zu erstellen .
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;
}
Jetzt JUnit erfordert eine Collection<T[]>
wie folgt aus:
// (descendant class)
@Parameters
public static Collection<SomeActualClass[]> data()
{
return someMethod(SomeActualClass.class);
}
Also, indem Sie etwas, um die Rückgabetyp wie ich will ändern:
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;
}
Leider Java lassen mich nicht tun Dies liegt daran, dass Sie keine generischen Arrays erstellen können.
Ich bin versucht, die Aussage als result.add((T[])new Object[]{someBean});
setzen, aber ist das sicher? oder gibt es einen besseren Weg?
„JUnit tatsächlich erfordert eine Sammlung "Warum benötigt es das? Es scheint irgendwie komisch –
user102008