编写有用的通用测试类

时间:2014-03-05 13:47:11

标签: java unit-testing generics

我有以下界面:

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 NumberW extends Number,但如果U和W是String类型,它将不起作用。如何以对测试Assembler更有用的方式编写这个泛型类?如果可能的话,我想避免模拟对象。另外我不确定Mocks是否仍然存在这个问题。

0 个答案:

没有答案