JUnit如何测试两个List <E>包含相同顺序的相同元素?
语境 我正在为该类编写一个简单的JUnit测试MyObject。 阿MyObject可以从静态工厂方法,需要一个可变参数的创建字符串。 MyObject.ofComponents("Uno", "Dos", "Tres"); 在存在的任何时间MyObject,客户都可以通过该方法检查以List <E>形式创建的参数.getComponents()。 myObject.ofComponents(); // -> List<String>: { "Uno", "Dos", "Tres" } 换句话说,a会MyObject记住并公开使它存在的参数列表。有关此合同的更多详细信息: 的顺序getComponents将与为对象创建选择的顺序相同 允许重复的后续String组件并按顺序保留 行为null未定义(其他代码保证没有null出厂) 对象实例化后,无法更改组件列表 我正在编写一个简单的测试,该测试MyObject从String列表创建一个,并检查它是否可以通过返回相同的列表.getComponents()。我立即执行此操作,但这应该在现实的代码路径中一定距离处发生。 码 这是我的尝试: List<String> argumentComponents = Lists.newArrayList("One", "Two", "Three"); List<String> returnedComponents = MyObject.ofComponents( argumentComponents.toArray(new String[argumentComponents.size()])) .getComponents(); assertTrue(Iterables.elementsEqual(argumentComponents, returnedComponents)); 题 是谷歌番石榴 Iterables.elementsEqual()最好的办法,只要我有库在我的构建路径,那些两个列表比较?我一直在为此苦恼;我应该使用遍及Iterable <E> ..检查大小然后迭代运行的.equals()..的辅助方法还是Internet搜索建议的任何其他方法?比较单元测试列表的规范方法是什么? 我很想获得的可选见解 方法测试是否设计合理?我不是JUnit专家! .toArray()将List <E>转换为E的可变参数的最佳方法是吗?