我有以下界面:
public interface Combiner<U, W> {
U combine(W[] args);
}
我还有一个Assembler类,它有一个Combiner实例的句柄,并在传入W类型的数组后使用它来返回泛型类型U的结果:
U result = myCombiner.combine(results);
我正在尝试编写一个小单元测试来测试Assembler。挑战在于如何编写有用的Combiner测试实例。我能想到的就是获取数组的第一个元素并将其转换为U.
public class MyCombiner<U, W> implements Combiner<U, W> {
@Override
public U combine(W[] args) {
U u = (U) args[0];
return u;
}
}
我想要做的是总结W []的所有元素并添加到U,但这假设类型是数字。我知道我可以在MyCombiner中使用U extends Number
和W extends Number
,但如果U和W是String类型,它将不起作用。如何以对测试Assembler更有用的方式编写这个泛型类?如果可能的话,我想避免模拟对象。另外我不确定Mocks是否仍然存在这个问题。