所以我试图调用JUnit Parameterized
测试运行器对单个泛型类型对象的加载。要使用的具体类是后代类已知的。如何在一组泛型类型上调用JUnit Parametrized测试运行器?
本来我设法得到一个返回Collection<T>
供JUnit使用的方法,但后来我意识到JUnit实际上需要一个Collection<T[]>
- 由于Java不愿意/拒绝创建泛型数组,因此无法创建此数组。
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;
}
现在的JUnit需要Collection<T[]>
这样的:
// (descendant class)
@Parameters
public static Collection<SomeActualClass[]> data()
{
return someMethod(SomeActualClass.class);
}
所以,我想通过做类似改变返回类型:
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;
}
不幸的Java不会让我做这是因为你不能创建通用数组。
我很想把陈述作为result.add((T[])new Object[]{someBean});
,但这是安全的吗?或者,还有更好的方法?
“实际的JUnit需要收集“为什么需要这个?看起来有些奇怪 –
user102008
2013-02-06 08:37:31